2011-07-09 91 views
7

我有一个node.js服务器启动并运行express,我试图建立一个使用socket.io服务器端和Chrome 12客户端的websocket连接。当我尝试连接时,socket.io输出一条调试消息,说“销毁nonsocket.io升级”,并且我的连接处理程序中的代码无法运行。同样在客户端,我的套接字的readyState是2(CLOSING)。websocket问题:无法连接到node.js服务器

[编辑] 从0变为2

+0

您是否使用客户端上的socket.io.js连接到服务器? – pkyeck

+0

你可以把你的代码片段(或链接到github)吗? –

+0

您使用的是什么版本的Node.js和socket.io? – apose

回答

1

插座的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浏览器的开发环境。

+0

当我尝试将socket.io.js添加到客户端时,出现客户端无法找到“要求”的错误。我查看了socket.io.js代码,它使用require,我认为它只是一个服务器端(即节点)的东西,而不是支持浏览器的JavaScript。我们需要在实现客户端“需求”的客户端中包含另一个库吗?或者我错过了什么? – Elisabeth

+0

@伊丽莎白你应该把它变成一个新的问题。您不会在客户端使用require()。在客户端中,您将使用

相关问题