io.socket.emit 返回未定义

Posted

技术标签:

【中文标题】io.socket.emit 返回未定义【英文标题】:io.socket.emit returns undefined 【发布时间】:2015-01-25 13:21:27 【问题描述】:

我正在尝试编写从节点到浏览器到所有客户端和发件人本身的简单响应,但我一直遇到此错误“发出未定义”我在此过程中做错了什么?我知道我可以使用 socket.broadcast.emit 和 socket.emit 来实现我的目标,但我认为 io.socket.emit 更干净

这是我的代码

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io').listen(server);
var sql = require('mysql');
server.listen(3000);

app.get('/nodeThis', function (req, res) 
  res.sendFile(__dirname + '/sample.html');
);

io.on('connection', function (socket) 

  socket.on('test value', function (data) 
    console.log(data);
    if(data === '1') 
        io.socket.emit('test results',  hello: 'Good' );
     else 
        io.socket.emit('test results',  hello: 'Bad' );
    
  );
);

【问题讨论】:

您是否尝试仅将消息发送到您收到test_value 消息的套接字?或连接到所有连接的套接字。 我希望所有连接的套接字 【参考方案1】:

您的代码看起来不错,除了以下内容。 你说过你喜欢派出每个客户。

然后改变

io.socket.emit('test results',  hello: 'Good' );
io.socket.emit('test results',  hello: 'Bad' );

收件人:

 io.sockets.emit('test results',  hello: 'Good' );
 io.sockets.emit('test results',  hello: 'Bad' );

只适用于所有套接字,所以 io.socket(s) :D

希望对你有所帮助。

【讨论】:

以上是关于io.socket.emit 返回未定义的主要内容,如果未能解决你的问题,请参考以下文章

套接字IO - socket.emit每次触发两次事件

useContext 返回未定义,即使它不应该是未定义的

这将返回未定义:(节点:3196)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“myArray”

为啥这个异步函数返回未定义? [复制]

反应位置返回未定义

为啥“”.abcd 返回未定义的值而不是在 Javascript 中抛出未定义的错误(但 Typescript 抛出警告)