我試圖從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