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

标签 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 火狐浏览器。 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/

相关文章:

javascript - 使用指针查找 Mongoose 对象

node.js - Websocket 连接在 chrome 中有效,但在 firefox 中连接失败?

socket.io - SockJS 还是 Socket.IO?值得重新编码基于 ajax 的页面吗?

javascript - Vue Socket.io-Extended this.$socket.$subscribe is not a function”切换路由页面后

php - 从 PHP 向 Node.js(socket.io) 发送请求

node.js - 如何将 GoogleMaps 标记广播到所有连接的套接字?

javascript - 尝试在 Mongoose 中填充,但它不起作用(nodejs)

javascript - Node 中的Linux系统变量

node.js - 如何忽略带有 Mustache JS 的标签

image - 将 2 个图像与 node.js 合并?