2014-10-31 6 views
14

Socket.io प्राप्त एक WebSocket सर्वरSocket.io - में विफल रहा है: कनेक्शन एक हाथ मिलाना प्रतिक्रिया NodeJS के लिए

किसी कारण के रूप में काम करने के लिए प्रतीत नहीं होता है से पहले बंद कर दिया, हमेशा लंबे मतदान पर वापस आने socket.io और अगर मैं WebSocket परिवहन परत मजबूर, यह पता त्रुटि देगा:

में विफल रहा है: कनेक्शन एक हाथ मिलाना प्रतिक्रिया

सही बंदरगाहों खुले हैं प्राप्त करने से पहले बंद कर दिया। मैं socket.io से chat example का उपयोग कर रहा हूं। मैंने सर्वर को http://jmi.io:3000 पर सेट अप किया है। आप देख सकते हैं, यह एक सुंदर लंबे मतदान चैनल के साथ ठीक काम करता है, लेकिन अब के लिए एक WebSocket ग्राहक से WebSocket कनेक्शन और ...

WebSocket कनेक्शन की कोशिश 'ws: // JMI: 3000 /' विफल: कनेक्शन एक हैंडशेक प्रतिक्रिया प्राप्त करने से पहले बंद

मेरे पास केवल एक नोड एकल धागा है और चैट उदाहरण रेपो की तुलना में सटीक उसी पैकेज.जेसन है।

{ 
    "name": "socket-chat-example", 
    "version": "0.0.1", 
    "description": "my first socket.io app", 
    "dependencies": { 
    "express": "4.3.1", 
    "socket.io": "1.2.0" 
    } 
} 

आपकी मदद

+0

आप इस एक हल करने के लिए प्रबंधन कैसे किया? – vlio20

उत्तर

26

के लिए धन्यवाद मैं ठीक उसी मुद्दा था, क्योंकि मैं कब 'दो बार परिभाषित करने गया था। दो बार जांचें कि आप अपने कोड में io को परिभाषित कर रहे हैं और सुनिश्चित करें कि आप दो बार परिवर्तनीय io को परिभाषित नहीं कर रहे हैं।

मैं गलत क्या कर रहा था का उदाहरण:

var server = require('http').createServer(app); 
var io = require('socket.io')(server); 

server.listen(config.port, config.ip, function() { 
    console.log('Express server listening on %d, in %s mode', config.port, 
    app.get('env')); 
}); 
+3

मेरे मामले में मैं दो अलग-अलग स्थानों में – OpenUserX03

+2

डॉन की आवश्यकता ('socket.io') (सर्वर) को कॉल कर रहा था! यह मेरे साथ भी हो रहा था! जवाब के लिए धन्यवाद। –

+1

मेरे मामले में यह सुनने के लिए 2 कॉल थीं, ऐसा लगता है कि मेरा कनेक्शन गिर गया है। –

2

मेरे मामले समस्या यह है कि मैं browser-sync

के माध्यम से सर्वर को प्रॉक्सी रहा था:

var server = require('http').createServer(app); 
var io = require('socket.io')(server); 

var io = require('socket.io').listen(server.listen(config.port, config.ip, function() { 
    console.log('Express server listening on %d, in %s mode', config.port,  
    app.get('env')); 
})); 

क्या समस्या का समाधान हो का उदाहरण

browserSync({ 
    //server: { 
    // // src is included for use with sass source maps 
    // baseDir: ['public', 'src'] 
    //}, 
    proxy: "localhost:4045", 
    port: 4046 

तो यह असफल हो जाएगा, हालांकि उत्पादन में यह ठीक काम करता है।

+0

बहुत बढ़िया। यह मेरा मुद्दा भी था। –

0

थोड़ा क्या @Lucas क्लास्सेन जवाब से संबंधित:

let express = require('express'); 
let app = express(); 
let http = require('http').Server(app); 
let io = require('socket.io')(http); 
// this is the culprit: 
app.listen(port); 

बदलने अंतिम पंक्ति है यह क्या तय: मैं निम्नलिखित था

http.listen(port); 
संबंधित मुद्दे