2016-05-13 3 views
0

Ich entschied mich für einen Chat auf socket.io, also kopierte ich einfach ein Beispiel aus http://psitsmike.com/2011/09/node-js-and-socket-io-chat-tutorial/.Socket.io: Verbindung geschlossen, bevor eine Handshake-Antwort empfangen wurde

Server-Seite:

var app = require('express').createServer() 
var io = require('socket.io').listen(app); 
app.listen(8080); 

app.get('/', function(req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

var usernames = {}; 

io.sockets.on('connection', function(socket) { 
    socket.on('sendchat', function(data) { 
     io.sockets.emit('updatechat', socket.username, data); 
    }); 

    socket.on('adduser', function(username) { 
     socket.username = username; 
     usernames[username] = username; 
     socket.emit('updatechat', 'SERVER', 'you have connected'); 
     socket.broadcast.emit('updatechat', 'SERVER', username + ' has connected'); 
     io.sockets.emit('updateusers', usernames); 
    }); 

    socket.on('disconnect', function() { 
     delete usernames[socket.username]; 
     io.sockets.emit('updateusers', usernames); 
     socket.broadcast.emit('updatechat', 'SERVER', socket.username + ' has disconnected'); 
    }); 
}); 

Client-Seite:

< script src="/socket.io/socket.io.js">< /script> 
< script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></ script> 
< script> 
var socket = io.connect('http://localhost:8080'); 
... 

Das Skript funktioniert gut, aber ich fand heraus, in der Chrome-Konsole, die es nicht websocket Verbindung herstellen kann, und fällt zurück auf XHR ('Websocket-Verbindung ungültig'). Versucht, Ports zu ändern, und getestet sowohl auf localhost und VPS - die gleichen Ergebnisse. Was kann der Grund sein? Mit Express 2.4.6 und socket.io 0.8.4.

+0

Ist var socket = io(); funktioniert nicht für Sie oder gibt immer noch Fehler @Kirill Alexeev – Sumeet

Antwort

0

Die Anwendung wird als Teil derselben Containeransicht bereitgestellt. Sie wird automatisch über die Anwendungs-URL verbunden. Host und Port möglicherweise nicht erforderlich, überprüfen Sie mit folgenden Optionen

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io(); 
</script> 

Andere Option

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io('http://localhost');  
</script>