2010-08-11 17 views
5

मैं क्लाइंट-साइड घटनाओं आग नहीं मिल सकता है, कृपया कोड/स्पष्टीकरण देखें:Node.js WebSockets Socket.IO

ठीक है, तो मैं इस काम के (मुझे लगता है कि)

ग्राहक मिल गया साइड कोड:

<script src="./Socket.IO/socket.io.js"></script> 
<script> 
    io.setPath('./Socket.IO/'); 

    var socket = new io.Socket('jayz.danstanhope.webfactional.com', { 'port': 80 }); 

    socket.on('connect', function() { 
     alert('connect'); 
    }); 
    socket.on('message', function (msg) { 
     alert('message' + msg); 
    }); 
    socket.on('close', function() { 
     alert('close'); 
    }); 
    socket.on('disconnect', function() { 
     alert('disconnect'); 
    }); 
    socket.connect(); 

</script> 

सर्वर साइड कोड:

var sys = require("sys") 
    , fs = require("fs") 
    , path = require("path") 
    , http = require("http"); 
var io = require('/home/danstanhope/webapps/htdocs/Socket.IO-node'); 

var server = http.createServer(function (req, res) { 
    //your normal server code 
    res.writeHead(200, { 'Content-Type': 'text/html' }); 
    res.write('Hello world'); 
    res.end(); 
}); 

server.listen(26970); 
server = io.listen(server); 
server.on('connection', function(client){ 
    sys.log('client connected'); 
}); 

जब मैं क्रोम में पृष्ठ को रीफ्रेश मैं लॉग WRI जा रहा है देख सकते हैं शैल में टीएनटी।

यहाँ मैं क्या देख रहा है:

[email protected] htdocs]$ node server.js 
9 Aug 19:19:37 - socket.io ready - accepting connections 
9 Aug 19:19:40 - Initializing client with transport "websocket" 
9 Aug 19:19:40 - Client 21789167495444417 connected 
9 Aug 19:19:40 - client connected 
9 Aug 19:19:40 - Client 21789167495444417 disconnected 

केवल मुद्दा अब उन जावास्क्रिप्ट सॉकेट अलर्ट आग के किसी भी हो रही है।

इसके अलावा, इस त्रुटि क्रोम में दिखाया जा रहा है:

Bad Upgrade header: Server: nginx 

Date: Wed, 11 Aug 2010 23:06:06 GMT 

Transfer-Encoding: chunked 

Connection: keep-alive 

Upgrade: WebSocket 

कैसे एक "बुरा हैडर" ठीक करने के लिए पर कोई भी विचार?

धन्यवाद, दान

उत्तर

0

बिल्कुल WebSockets के बारे में कोई जानकारी नहीं बीत रहा है, लेकिन ग्राहक कोड में आप पोर्ट 80 के साथ सॉकेट प्रारंभ लेकिन आप सर्वर बता बंदरगाह 26970.

+0

अरे, कि क्योंकि मैं 26970. के लिए बंदरगाह अग्रेषण हूँ तो मुझे लगता है कि ठीक काम करेगा। धन्यवाद वैसे भी, हालांकि :) – Dan

-3

सुंदर यकीन है कि विधि में सुनने के लिए नाम "addEvent" हालांकि "पर" निश्चित रूप से अधिक "नोड-y" होगा, नहीं "पर", :)

socket.addEvent('connect', function() { 
    alert('connect'); 
}); 
socket.addEvent('message', function (msg) { 
    alert('message' + msg); 
}); 
socket.addEvent('close', function() { 
    alert('close'); 
}); 
socket.addEvent('disconnect', function() { 
    alert('disconnect'); 
}); 
+0

धन्यवाद उत्तर के लिए एक बहुत, कि यह हालांकि ठीक नहीं :( एक ही मुद्दा है, घटनाओं फायरिंग नहीं। – Dan

+4

असल .on सही है। –

0

"http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75 के रूप में, जो क्रोम 4 में प्रयोग किया जाता है और 5, प्रतिक्रिया शीर्षलेख के साथ शुरू होना चाहिए:

HTTP/1.1 101 वेब सॉकेट प्रोटोकॉल सहभागिता

अपग्रेड: WebSocket

कनेक्शन: नवीनीकरण "

एक त्वरित गूगल खोज किया और यह है कि क्या मैं के साथ आया है।

2

अभी तक, एक nginx मशीन से websockets का लाभ उठाना संभव नहीं है। इसे हाल ही में ठीक किया जा सकता है, लेकिन मेरे सभी शोध कहते हैं कि इस समय nginx और Apache websockets होस्ट नहीं कर सकता है। ऐसा लगता है कि अधिकांश रिवर्स प्रॉक्सी वेबसाइकिल से असहमत हैं।

Can nginx be used as a reverse proxy for a backend websocket server?

2

मैं एक समय पहले इस सटीक एक ही मुद्दा था और समस्या socket.io के दो विभिन्न संस्करणों की वजह से किया जा रहा समाप्त हो गया। मैंने एक संस्करण आयात करने के लिए एनपीएम का उपयोग किया, फिर एक अलग डेवलपर से जिथब पर क्लाइंट साइड संस्करण मिला और वे असंगत थे। दो बार जांचें कि आप अनजाने में किसी और के कांटे का उपयोग नहीं कर रहे हैं।

3

आप मानक HTML अनुरोधों को nginx के साथ प्रॉक्सी कर सकते हैं लेकिन वेबसाइकिल नहीं और न ही फ्लैशस्केट कनेक्शन इस तथ्य के कारण है कि nginx प्रॉक्सी के माध्यम से गैर HTTP 1.0 यातायात को आगे नहीं बढ़ा सकता है। तो WebSockets एक नहीं जाने हैं और फ्लैश यह crossdomain नीति है भेजने में सक्षम के रूप में यह इस तरह एक सा लग रहा है नहीं होगा:

<policy-file-request/>\x00 

कौन सा खुशी से nginx पर एक HTTP 400 त्रुटि निकलती है।

आदेश यह काम करने के लिए, आप बंदरगाह के लिए ग्राहक से कनेक्ट करना होगा अपने Node.js एप्लिकेशन पर सुन रहा है:

<script src="./Socket.IO/socket.io.js"></script> 
<script> 
    io.setPath('./Socket.IO/'); 

    var socket = new io.Socket('jayz.danstanhope.webfactional.com', { 'port': 26970 }); 

    socket.on('connect', function() { 
     alert('connect'); 
    }); 
    socket.on('message', function (msg) { 
     alert('message' + msg); 
    }); 
    socket.on('close', function() { 
     alert('close'); 
    }); 
    socket.on('disconnect', function() { 
     alert('disconnect'); 
    }); 
    socket.connect(); 

</script> 
संबंधित मुद्दे