eventmachine - em-websocket and javascript client connection -
मेरे पास एक साधारण इवेंटमैचिन वेब सॉकेट सर्वर (इवेंटमैचिन 1.0.0) है:
EM.run {# WebSocket Server EM :: WebSocket.start (: होस्ट = & gt; "0.0.0.0",: port = & gt; 8080) do | ws | Ws.onopen do sid = @ channel.subscribe {| msg | | Ws.send msg} डालता है "* नया वेबसॉकेट क्लाइंट & lt; # sid} & gt; कनेक्ट!" अंत में | संदेश भेजें | msg | डालता है "* websocket क्लाइंट & lt; # {@ sid} & gt;: # {msg}" अंत ws.onclose do @ channel.unsubscribe (sid) डालता है "* webscover क्लाइंट & lt; # {@ sid} & gt; बंद" समाप्ति अंत } मैं इसे जावास्क्रिप्ट क्लाइंट के माध्यम से निम्नलिखित कोड से कनेक्ट करने का प्रयास कर रहा हूं:
socket = new WebSocket ("ws: // localhost : 8080 "); Socket.onopen = function (e) {socket.send ('Connesso'); }; Socket.onmessage = function (mess) {if (mess) {socket.send (mess)); }}; Socket.onclose = function (e) {socket.send ('Disconnesso'); }; सफारी के पिछले संस्करणों के साथ यह नवीनतम सर्वर से सर्वर पर कनेक्ट नहीं हो रहा था।
मैंने इसे पिछले क्रोम देव स्थिर संस्करण लेकिन यह काम नहीं कर रहा है।
वेब सॉकेट हेडर भेजा जाता है लेकिन यह लंबित स्थिति में रहता है।
अगर मैं वेब सॉकेट पर एक पाठ संदेश भेजता हूं तो मुझे INVALID_STATE_ERR प्राप्त होता है: डोम अपवाद 11 । मैंने देखा कि एक मसौदा बदल हुआ है, लेकिन मैंने सोचा था कि उसे वेब-वेबक्राफ्ट 0.3.8 पहले ही लागू किया गया है।
क्या आप इसे हल करने में मेरी सहायता कर सकते हैं मुद्दा?
बहुत बहुत धन्यवाद
INVALID_STATE_ERR: डोम अपवाद 11 का मतलब है कि आपका वेबकॉक अभी तक तैयार राज्य में नहीं।
आप सॉकेट द्वारा websocket ऑब्जेक्ट की स्थिति को देख सकते हैं। फायरस्टेट आप संदेश भेज सकते हैं जब socket.readyState == 1
मैंने इसके लिए एक बदलाव लाया टाइमआउट का उपयोग करके
टाइमरआईडी = सेट इन्टरवाल (sendDataWhenReady, 1000); फ़ंक्शन sendDataWhenReady () (यदि (socket.readyState == 1) {ws.send (JSON.stringify ({"type": "STATUS", "status": स्थिति, "उपयोगकर्ता नाम": logged_in_user})) स्पष्ट अंतराल (टाइमरआईडी) ; }}
Comments
Post a Comment