我是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 firefox上。节点版本:0.8.7
答案 0 :(得分:1)
所以你应该在服务方面这样做:
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在非Web服务器环境中不起作用。我的意思是,如果您使用文件协议访问您的客户端,它将无法工作。 你需要一个http服务器。 我做的是轻松完成任务,我使用python内置的web-server。它完成了这项工作。 只是在你的客户端文件夹中生成它,如下所示:
python -m SimpleHTTPServer
然后将浏览器指向端口8000(默认)。
我已经创建了一个boiler plate socket.io应用,您可以克隆甚至直接推送到dotCloud.com
这是一个简单的示例,可以帮助您开始使用socket.io。
答案 1 :(得分:0)
查看soket.io GitHub page上的示例。
您写道:io.on('connection'
代替io.sockets.on('connection'
此代码应该可以正常工作:
var io = require('socket.io').listen(8888);
io.set('log level', 1);
io.sockets.on('connection', function(socket){
socket.emit('hi');
console.log("Connected");
});