Socket.io:在收到握手响应之前关闭连接 [英] Socket.io: Connection closed before receiving a handshake response
问题描述
我决定在socket.io上聊天,所以我只是从http://psitsmike.com/2011/09/node-js-and-socket-io-chat-tutorial/.
服务器端:
var app = require('express').createServer()var io = require('socket.io').listen(app);应用程序听(8080);app.get('/', function(req, res) {res.sendfile(__dirname + '/index.html');});var 用户名 = {};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 = 用户名;用户名[用户名] = 用户名;socket.emit('updatechat', 'SERVER', '你已经连接');socket.broadcast.emit('updatechat', 'SERVER', username + '已连接');io.sockets.emit('updateusers', 用户名);});socket.on('断开', function() {删除用户名[socket.username];io.sockets.emit('updateusers', 用户名);socket.broadcast.emit('updatechat', 'SERVER', socket.username + '已断开连接');});});
客户端:
<代码><脚本 src="/socket.io/socket.io.js"></脚本><脚本src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script><脚本>var socket = io.connect('http://localhost:8080');...
脚本工作正常,但我在 Chrome 控制台中发现它无法建立 websocket 连接,并回退到 XHR('websocket 连接无效').尝试更改端口,并且还在本地主机和 VPS 上进行了测试 - 结果相同.原因是什么?使用 express 2.4.6 和 socket.io 0.8.4.
应用程序作为同一容器视图的一部分进行部署,它将使用应用程序 url 自动连接.可能不需要主机和端口,请检查以下选项
<脚本>var socket = io();
<块引用>
其他选项
<脚本>var socket = io('http://localhost');
I decided to make a chat on socket.io, so I just copied an example from http://psitsmike.com/2011/09/node-js-and-socket-io-chat-tutorial/.
Server side:
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 side:
< 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');
...
The script works fine but I found out in the Chrome console that it can't establish a websocket connection, and falls back to XHR ('websocket connection invalid'). Tried to change ports, and also tested both on localhost and VPS - same results. What can be the reason? Using express 2.4.6 and socket.io 0.8.4.
Application is deployed as part of same container view , it will automatically connect using application url . Host and port might not be required , check with below options
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>
Other option
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io('http://localhost');
</script>
这篇关于Socket.io:在收到握手响应之前关闭连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!