io.socket.emit返回undefined

我试图从节点到浏览器写一个简单的响应到所有的客户端和发件人本身,但我一直有这个错误“发出未定义的”我在这个过程中做错了什么? 我知道我可以使用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' }); } }); }); 

您的代码似乎没有问题,除了下面 你告诉过你想发送每一个客户。

然后改变

 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' }); 

只是对所有的sockets,所以io.socket(s):D

希望这可以帮助你。