问题插座。io不工作
- 用
express [folder]; cd [folder]; npm install;
生成一个项目 - 设置套接字。io
npm install socket.io
- 使用下面的代码运行节点应用程序
- 客户端连接事件触发,但服务器连接从未触发。
- 服务器 AWS免费版,Ubuntu 11.10, ami-a7f539ce nodejs v0.6.5
- express v2.5.1
- 插座。io v0.8.7
var socket = io.connect('http://example.com:3000');
socket.on('connect', function() {
console.log('connected');
});
socket.on('message', function(msg){
console.log(msg);
});
socket.on('disconnect', function() {
console.log('disconnected');
});
socket.on('error', function (e) {
console.log('System', e ? e : 'A unknown error occurred');
});
服务器 [...]
app.listen(3000);
// socket.io setup
var socket = require('socket.io').listen(app);
// socket.io connection establishment
socket.on('connection', function (client) {
client.send("hello");
console.log("hello", client);
});
为什么连接事件从未触发?
花了一段时间才注意到…connection
事件发射在io.sockets
上。在你的代码中,这应该是
socket.sockets.on('connection', function (client) {
client.send("hello")
console.log("hello", client)
})
您应该使用io
而不是socket
作为变量名,以避免这种混淆。
Ricardo Tomasi是对的,救了我的命,我要疯了。
虽然事情发生了变化,但我们已经在2013年了,仍然有一个问题(自2年以来)在这个
可能发生了一些变化,无论如何,为了注册'connect'事件,我必须这样做:
var openSocket = function (uniqueID) {
var appSocket = io.connect('/'+uniqueID, { transports: ['websocket', 'xhr-polling']});
appSocket.socket.on('connect', function () {
console.log('i did connect.');
});
return appSocket;
};
下面的方法对我很管用:socket。io-client:"^ 0.9.16 "
io.connect("http://localhost:4000", {'force new connection': true});
现在'connect'事件持续触发并且没有重复使用。
我通过检查socket.io-client/lib/io.js行:192找到了这个选项因为我甚至不能在github中找到这个io.js文件,我认为在未来的版本中有重构,这个选项可能不起作用。