node.js - socket.on ('connection' ... 事件从未触发 nodejs + express + socket.io

标签 node.js websocket express socket.io

问题 socket.io 不工作

详情

  • express [文件夹] 生成了一个项目; cd [文件夹]; npm 安装;
  • 设置 socket.io npm install socket.io
  • 使用以下代码运行 Node 应用程序
  • 客户端 connect 事件触发,但服务器 connection 从未触发。

设置

  • 服务器 AWS 免费套餐、Ubuntu 11.10、ami-a7f539ce
  • nodejs v0.6.5
  • express v2.5.1
  • socket.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 事件从未触发?

最佳答案

花了一段时间才注意到... connection 事件在 io.sockets 上发出。在您的代码中,这将是

socket.sockets.on('connection', function (client) {
  client.send("hello")
  console.log("hello", client)
})

您应该使用 io 而不是 socket 作为 var 名称以避免这种混淆。

关于node.js - socket.on ('connection' ... 事件从未触发 nodejs + express + socket.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8424886/

相关文章:

javascript - 内部像 lodash 中的合并

javascript - 如何使用express js路由器解决CORS重定向?

node.js - 使用 Mocha 在 NodeJS 中进行 OAuth 流测试

azure - SignalR 不使用 ASPNET 4.6 的 Websocket 传输

javascript - 如何访问主体设置为原始数据的 postman 请求的 req.body.title

node.js - 如何在 mongoDB 中进行全动态搜索?

node.js - 成功的 npm 包发布未显示在 npm.js 上

javascript - 当使用socket.io发送JavaScript对象时,它是将其编码为JSON还是以二进制格式发送?

angularjs - Socket.io 是聊天模块的理想选择吗

html - ejs的样式标签相对路径问题