我有一个node.js服务器启动并运行express,我试图建立一个使用socket.io服务器端和Chrome 12客户端的websocket连接。当我尝试连接时,socket.io输出一条调试消息,说“销毁nonsocket.io升级”,并且我的连接处理程序中的代码无法运行。同样在客户端,我的套接字的readyState是2(CLOSING)。websocket问题:无法连接到node.js服务器
[编辑] 从0变为2
我有一个node.js服务器启动并运行express,我试图建立一个使用socket.io服务器端和Chrome 12客户端的websocket连接。当我尝试连接时,socket.io输出一条调试消息,说“销毁nonsocket.io升级”,并且我的连接处理程序中的代码无法运行。同样在客户端,我的套接字的readyState是2(CLOSING)。websocket问题:无法连接到node.js服务器
[编辑] 从0变为2
插座的readyState确保您插入socket.io.js文件到您的客户端代码和使用它。如果您尝试在客户端创建自己的websocket,您可能会遇到问题。
做这样的事情为您的服务器:
var app = require('express').createServer()
, io = require('socket.io').listen(app);
app.listen(80);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
,并像这样为你服务的HTML文件:
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
确保您从您的网络服务器目录服务/socket.io/socket.io.js
。然后,只需进入该页面,即可从选项或Firebug中观看控制台登录到Web浏览器的开发环境。
当我尝试将socket.io.js添加到客户端时,出现客户端无法找到“要求”的错误。我查看了socket.io.js代码,它使用require,我认为它只是一个服务器端(即节点)的东西,而不是支持浏览器的JavaScript。我们需要在实现客户端“需求”的客户端中包含另一个库吗?或者我错过了什么? – Elisabeth
@伊丽莎白你应该把它变成一个新的问题。您不会在客户端使用require()。在客户端中,您将使用
您是否使用客户端上的socket.io.js连接到服务器? – pkyeck
你可以把你的代码片段(或链接到github)吗? –
您使用的是什么版本的Node.js和socket.io? – apose