无法在SOCKET.IO客户端中接收事件

时间:2012-08-25 11:04:25

标签: node.js socket.io

我是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

2 个答案:

答案 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");
});