أفضل إطار Java لـ WebSockets الجانبية الخادم [مغلق

StackOverflow https://stackoverflow.com/questions/4003102

  •  25-09-2019
  •  | 
  •  

سؤال

أريد إنشاء خادم بسيط له تحميل منخفض. الهدف من ذلك هو إعطاء عدد قليل من عملاء JavaScript الوصول إلى بعض الوظائف التي تم تنفيذها في Java من خلال WebSockets. أسعى للحصول على أفضل مكتبة لاستخدامها في ذلك - يجب أن تكون بسيطة وقوية وما إلى ذلك. الآن أعتبر 3 بدائل - JWebSocket - Jetty - Netty ما هو الأفضل؟ أو قد يكون شيئا آخر؟

شكرا لك مقدما

هل كانت مفيدة؟

المحلول

يتضمن JWebsCOCKET الآن محرك Jetty 8.0 بما في ذلك SSL ويتضمن العديد من اللطيفات اللطيفة فوقه. إنه يوفر عملاء متماسكين ومتطابقين عبر المنصات حتى المزيد من تطبيقات الأجهزة المحمولة على سبيل المثال تحت Android و Symbian و Blackberry. يمكن بسهولة تمديد الخادم باستخدام المكونات الإضافية ويتضمن بالفعل الكثير منها (على سبيل المثال للمصادقة/التلقائي ، JDBC ، SMTP ، XMPP/JABBER ، RPC ، Twitter ، Filesharing ، الدردشة وما إلى ذلك). فقط تحقق من ذلك ... http://jwebsocket.org. اتطلع لملاحظاتك في المستقبل.

تحياتي أليكس

نصائح أخرى

سأذهب مع خوادم Servlet Java المثبتة: رصيف أو راتنج. تم تمديد كلاهما للتعامل مع WebSockets:

ويب Websockets الرصيف

راتنج Websockets

سيكون خياري الشخصي رصيفًا ، حيث إنه بسيط للغاية للاستخدام وقد كنت أستخدمه كخادم مضمن في العديد من المشاريع.

هناك أيضًا بعض الأطفال الجدد في الكتلة مثل الغلاف الجوي و jwebocket, ، لكن بالنسبة للخوادم ، أفضل أن أذهب مع حل مثبت. يعد Jetty و Resin أيضًا خوادم Servlet عامة ، بحيث يمكنك الذهاب مع منتج واحد لجميع احتياجاتك التقدمية.

ال playframework! هو الخيار الآخر جيد جدا.

FYI ، الجو يركض فوق الراتنج والسمك الزجاجي والرصيف. Atmosphere Free You من التعرض لخادم واحد من خلال منحك WebSocket Portability بين خادم WebSocket. كما يوفر مكتبة عميل يمكن تحديد أفضل نقل في حالة عدم دعم WebSocket بواسطة المتصفح. لذلك لا يمكنك مقارنة الجو مع رصيف أو rsin

ألق نظرة على الغلاف الجوي. هنا مقال حول WebSocket و Atmosphere.

على الرغم من أنني أقدر تطبيقات jwebbsockets و autobahn كثيرًا ، إلا أنني أفضل الجو.

تكثيف:: الوقت المنحدر منخفض. بذل فرانسوا أركاند الكثير من الجهد في الاختبار والأمثلة ، مما يساعد الجميع على تحقيق انتصارات سريعة. (وليس لدي أدنى فكرة عن سبب تمكنه من الرد بسرعة على أي أسئلة معمارية أرتفع. مثيرة للإعجاب.)

منظور الصيانة:: بالنسبة لي ، فإن الصيانة أساسية ، إذا كان البرنامج يتجاوز الإصدار الرئيسي 1.0.0. يتم الحفاظ على المشروع على مستوى Maven-POM العلوي مع تسلسل هرمي تم إنشاؤه بشكل صحيح. يمنع عدم توافق المكتبة. المكتبات مرجعية على المستوى الصحيح. هذا جيد.

المنظور الفني/الوظيفي:: إنه يوفر مكتبة عميل Java SE (Wasync) يمكنها إما القيام بالاتصالات المحلية (OnMessage) أو بناء التعليقات التوضيحية لموسيقى الراحة في Jersey (Path). بعد ذلك ، يجعل هذا الأمر بسيطًا كما هو مع الاستفادة من الحفاظ على اتصال مفتوح للاشتراكات ونموذج مكالمات الإجراءات عن بُعد الشائعة (RPC). إنها محاولة شائعة لدمج هذين النموذجين. أنظر أيضا http://wamp.ws/, الذي يتجه لنفس النهج. أيضًا ، تقدم المكتبة إنشاء خصائص جودة الخدمة مثل المتانة (على سبيل المثال في حالة تفكيك العميل) والموثوقية (تخزين الرسائل غير المنفذة). هذا رائع للبرامج المهنية لتسخير.

ربما يجب أن تحاول خادم Bristleback؟ باستخدام Bristleback ، يمكنك الاختيار من بين العديد من محركات WebSockets ، مثل Jetty و Netty و Tomcat. يمكنك الحصول على خادم مستقل وكذلك تطبيق الويب الذي يستخدم WebSockets (Jetty و Tomcat 7). Bristleback يستخدم إطار الربيع. إذا كنت قد عملت مع أطر عمل الويب مثل الدعامات أو الخطوط أو اللعب! ، فسيكون من السهل جدًا أن تبدأ. بالطبع ، لدى Bristleback مكتبة عميل JavaScript الخاصة بها لتطوير أسهل.

الإفصاح الكامل: أنا أحد المبدعين المشاركين لخادم Bristleback.

أود أيضا أن أضيف vert.x إلى القائمة. يمكنه خادم Websockets و SockJs (محاكاة WebSocket عندما لا يدعمها المتصفح).

تحديث:
تعهد http://undertow.io يدعم أيضا WebSockets.

اتبع مدونتي. سأكون جاهزًا للإفراج في وقت ما في المستقبل غير بعيدًا. تم التأكيد على الوزن الخفيف من خلال كل شيء - لكنه سريع أيضًا. لا أعرف حتى الآن إلى أي مدى ستعمل على زيادة الأحمال العليا. لكنني كنت أقوم بتشغيل العرض التوضيحي لفترة من الوقت الآن مع حمولة منخفضة نسبيًا وما عملت عليه بشكل جيد. (سأختبر أحمالًا أثقل في وقت لاحق وتأكد من زيادة عددها.)

http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html

إذا كنت تبحث عن البنية التحتية حول إدارة الرسائل ، وتجميع المستخدمين ("الغرف") ، ومزامنة البيانات ("المتغيرات المشتركة") ، فقد ترغب في النظر في منصة الاتحاد:

http://www.unionplatform.com

الكشف الكامل: أنا أحد المشاركين في الاتحاد

لماذا لا تكتب فقط تطبيقك على معيار مفتوح مثل JMS ، وتسمح للعملاء بالجلوس على ناقل JMS كعملاء للرسائل؟ الهدف الكامل من WebSockets هو إحضار أي بروتوكول TCP الأصلي مباشرة إلى العميل بدلاً من تحويله من النهاية الخلفية إلى طلب/استجابة HTTP.

ستتحدث خدمات النهاية الخلفية إلى وسيط JMS مثل ActiveMQ ، ويتحدث عملاؤك AMQP في المتصفح عبر واجهة برمجة تطبيقات JavaScript التي تشبه API JMS في Java. كل ما تحتاجه لهذا هو بوابة WebSocket ، على سبيل المثال Kaazing لديها مثل هذه البوابة ، كل ما تفعله هو توجيه حركة مرور JMS TCP إلى عملاء الويب عبر WebSockets. كما أنها توفر المشجعين حتى لا تفرط في تحميل ناقل JMS الخاص بك ، أي أنك فقط تستخدم حفنة من الاتصالات إلى الوسيط لتفريغ اتصالات عميل المليون.

خلاصة القول هي أنك لست بحاجة إلى ربط نفسك بأي منصة محددة. التمسك بالمعايير ، وبهذه الطريقة لديك حرية بنسبة 100 ٪ لتبديل المكونات مع تغير بيئتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top