我试图从express 4路由向我所有连接的客户端发送socket.io消息。我在同一个文件中的所有路线,它从官方socket.io chat example克隆。我想向我所有最近连接的客户端发出“公告”消息。Socket.IO在Express 4路由上发出
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
io.sockets.emit('chat message', "ANNOUNCEMENT : ..."); // <-- HERE
});
io.on('connection', function(socket){
socket.on('chat message', function(msg){
console.log(msg);
io.emit('chat message', msg);
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
但它没有发出消息,我在控制台上看不到任何东西。我已将路由移至另一个文件,并将io
对象作为参数传递给路由,但它仍不起作用。如果我从客户端JavaScript发出消息,它正在工作。
"dependencies": {
"express": "4.10.2",
"socket.io": "1.2.0"
}
步骤来重现问题,例如聊天的index.js
git clone https://github.com/rauchg/chat-example.git
cd chat-example && npm install
nano index.js
- 更改内容与我上面的代码
node index.js
- 浏览到
localhost:3000
,您应该在聊天面板上看到一条公告,因为我在app.get()
路线上发布了它。但没有公告。
你想完成什么?你能向我们展示客户端代码吗?您是否试图向所有连接的客户端进行广播? – jfriend00
我试图从我的路由发送消息(发出)到所有连接的客户端。 @ jfriend00 – Eray
当你点击'/'路由时,你的浏览器是否正确地获取了'index.html'?此外,'io.emit('chat message',“msg”)'是发送给所有连接客户端的正确方式。如果你在'app.get()'处理程序中放置了一个'console.log(“got/route”)',你看到了吗?您需要告诉我们您已经完成的基本调试步骤以及您观察到的内容。 – jfriend00