2011-08-05 14 views
5

मैं पिछले कुछ दिनों से वेबसाकेट्स के साथ प्रयोग कर रहा हूं और मुझे नए, बहुत अच्छे, तकनीक के साथ कुछ मिश्रित अनुभव हैं। मैंने एक साधारण चैट क्लाइंट लिखा है जो HTML5 Labs से नवीनतम रिलीज का उपयोग करता है, जो मुझे लगता है कि हाइबी -0 9 ड्राफ्ट स्पेक रिलीज है। क्लाइंट क्रोम (देव चैनल v14.0) में बहुत अच्छा काम करता है। सबकुछ काम करता है जैसा इसे करना चाहिए। हालांकि, हर दूसरे प्रमुख ब्राउज़र है कि मूल रूप से WebSockets का समर्थन करता है में (फ़ायर्फ़ॉक्स (v6.0b) (हाँ, मैं WebSockets कार्यक्षमता को चालू किया था), सफारी (v5.1)), यह किसी कारण से कनेक्ट नहीं कर सकता। यहाँ मेरे मुवक्किल कोड के कुछ है:वेबसॉकेट संस्करण और पिछड़ा संगतता

$(document).ready(connect); 

function connect() { 
    if ('WebSocket' in window) { 
     websocket = new WebSocket('ws://' + window.location.hostname + ':4502/chat'); 
    } 
    else if ('MozWebSocket' in window) { 
     websocket = new MozWebSocket('ws://' + window.location.hostname + ':4502/chat'); 
    } 
    else { 
     //not supported 
     return; 
    } 

    websocket.onopen = function() { 
     //do some setup stuff 
    }; 

    websocket.onclose = function() { 
     //DOH 
    }; 

    websocket.onmessage = function (e) { 
     //Do some stuff with e.data 
    }; 
} 

और कुछ (सी #) सर्वर कोड:

static void Main(string[] args) 
{ 
    var host = new WebSocketsHost<ReverseService>(); 
    host.AddWebSocketsEndpoint("ws://" + Environment.MachineName + ":4502/chat"); 
    host.Open(); 

    Console.ReadLine(); 
} 

जैसा कि मैंने कहा, यह क्रोम में ठीक जोड़ता है और एकदम सही ढंग से .onopen समारोह पूरी करता है। एफएफ और सफारी में, यह सीधे बंदरगाह समारोह में जाता है और कभी कनेक्ट नहीं होता है।

"NetworkError: 501 Not Implemented - http://localhost:4502/chat" 
Firefox can't establish a connection to the server at ws://localhost:4502/chat 

और सफारी में:

WebSocket frame (at 4294967295 bytes) is too long. 

केवल एक चीज मैं के बारे में सोच सकते हैं पश्च संगतता मुद्दा किसी तरह का है एफएफ में, मैं निम्नलिखित त्रुटियाँ मिलता है। मेरा मानना ​​है कि क्रोम 14.x हाइबी वेबसाकेट्स के ड्राफ्ट 10 स्पेस को लागू करता है और मुझे लगता है कि एफएफ 6 ड्राफ्ट 07 या 08 लागू करता है और मुझे सफारी 5.1 के बारे में निश्चित नहीं है। अगर किसी के पास कोई अंतर्दृष्टि है कि समस्या क्या है और/या मैं इसे कैसे ठीक कर सकता हूं, तो मैं सहायता की सराहना करता हूं। धन्यवाद!

+0

विंडो कोड खंड में धन्यवाद। क्रॉसप्लेटफार्म जेएस लिखने का एक आसान तरीका ढूंढ रहा था। – Stevko

उत्तर

5

क्रोम 14 और फ़ायरफ़ॉक्स 7 (अरोड़ा बिल्ड, "मोज़ा" के साथ उपसर्ग और डिफ़ॉल्ट रूप से सक्षम) प्रोटोकॉल के हाइबी -10 संस्करण का समर्थन करता है। मूल वेबस्केट समर्थन वाले सभी चीजें अभी भी प्रोटोकॉल के हिक्सी -76 संस्करण का उपयोग कर रही हैं।

ऐसे सर्वर कार्यान्वयन हैं जो पहले से ही हाइबी प्रोटोकॉल का समर्थन करते हैं और कई और जल्द ही क्रोम 14 में यह मूल रूप से होगा। ऐसे कुछ हैं जिनके पास हिक्सी -76 और प्रोटोकॉल के नए हाइबी संस्करणों (libwebsockets, websockify) दोनों के लिए समर्थन है। मुझे विशेष रूप से हैरान नहीं है कि माइक्रोसॉफ्ट के प्रोटोटाइप सर्वर कार्यान्वयन केवल प्रोटोकॉल के एक संस्करण का समर्थन करता है (क्योंकि वे हिक्सी अवधि के दौरान खेल में नहीं थे)।

अद्यतन:

कुछ सर्वर विकल्प:

  • libwebsockets - सी कार्यान्वयन
  • websockify - मेरी अजगर कार्यान्वयन। websockify टीसीपी सॉकेट प्रॉक्सी/पुल के लिए एक websockets है, लेकिन websocket.py एक सामान्य websocket मॉड्यूल है।
+0

वाह, शानदार जवाब। बहुत बहुत धन्यवाद। :) कोई विचार जहां मुझे सर्वर कार्यान्वयन में से एक मिलेगा जो दोनों का समर्थन करता है? – Chris

1

यहाँ नवीनतम प्रोटोकॉल कल्पना की विशिष्ट सुविधाओं के लिए क्रोम 14 और Firefox 7/8 के एक WebSockets प्रोटोकॉल test report सूची अनुरूपता है।

परीक्षण सूट Autobahn WebSockets का हिस्सा है, मेरी एक छोटी परियोजना जिसमें पाइथन/ट्विस्ट-आधारित वेबसाकेट कार्यान्वयन शामिल है, जिसका उपयोग ग्राहकों और सर्वरों को लिखने के लिए किया जा सकता है।

कोड अपाचे 2.0 लाइसेंस प्राप्त है और सभी गिटहब पर हैं।

1

यहां एक .NET आधारित (फ्री) वेबसाकेट सर्वर है जो Hybi10 और पुराने प्रोटोकॉल का समर्थन करता है।http://xsockets.net

में पाया जा सकता या दृश्य स्टूडियो 2010 में पैकेज प्रबंधक कंसोल में स्थापित-पैकेज XSockets उपयोग करके अपने प्रोजेक्ट (MVC3) को जोड़ने चलाने (इसके अलावा लगता है 2008 Nuget करना होगा अब)

मैं का उपयोग करता है मदद के रूप में वीडियो में से एक http://xsockets.net/Video/Index

संबंधित मुद्दे