我是 socket.io 的新手,我正在尝试他们网站上提到的示例。我很顺利,但是当我尝试在服务器端使用 io.emit 并尝试在客户端接收时出现问题。
这是我的服务器代码
var io=require("socket.io").listen(8888);
io.set('log level',1);
io.on('connection',function(socket){
socket.emit('hi');
console.log("Connected");
});
还有我客户的代码
<script src="http://localhost:8888/socket.io/socket.io.js"></script>
<script>
var socket=io.connect("http://localhost:8888");
socket.set('log_level',1);
socket.on('hi',function(){
console.log('received');
});
</script>
问题是我在控制台中没有看到“已收到”消息!答案可能微不足道,但我尝试过尝试,但每次都失败了。请指导....
我使用的是 ubuntu 火狐浏览器。 Node 版本:0.8.7
最佳答案
所以你应该在服务端有这个:
var io = require('socket.io').listen(88888);
io.set('log level',1);
io.sockets.on('connection', function (socket) {
socket.emit('hi);
console.log("Connected");
});
});
你应该在客户端有这个:
<script src="http://localhost:8888/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:8888/');
socket.set('log_level',1);
socket.on('hi', function () {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
像许多 html5 功能一样,WebSockets 无法在非网络服务器环境中工作。我的意思是,如果您使用文件协议(protocol)访问客户端,它将不起作用。 你需要有一个http服务器。 为了轻松完成工作,我使用 python 内置网络服务器。它完成了这项工作。 只需在您的客户端文件夹中生成它,如下所示:
python -m SimpleHTTPServer
然后将浏览器指向端口 8000(默认)。
我做了一个boiler plate您可以克隆甚至直接推送到 dotCloud.com 的 socket.io 应用程序
这是一个简单的示例,可以帮助您开始使用 socket.io。
关于node.js - 无法在 SOCKET.IO 客户端中接收事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12121420/