我正在使用NodeJS和socket.io(和Express)設置一個簡單的項目。我app.js的樣子:NodeJS + socket.io:服務器沒有收到發出的消息
var express = require("express");
var app = express();
var port = 8003;
var __root = '/voidwalker/';
console.log('Listening on port: ' + port);
// Settings //
app.set('views', __dirname + '/tpl');
app.set('view engine', "jade");
app.engine('jade', require('jade').__express);
app.use(__root, express.static(__dirname + '/public'));
// Pages //
app.get(__root, function(req, res) {
res.render('voidwalker');
});
// Socket.io //
var io = require('socket.io').listen(app.listen(port));
io.sockets.on('connection', function (socket) {
socket.emit('message', {message: 'Welcome to the chat!'});
socket.on('send', function(data) {
console.log('TEST', data);
io.sockets.emit('message', data);
});
});
而且我的客戶端JS的樣子:
window.onload = function() {
var socket = io.connect('http://node.domain.com:8003/voidwalker/');
if (settings.debug) console.debug('Loaded socket.io', socket);
socket.on('message', function (data) {
console.log('data recieved')
console.log(data);
});
console.log(socket.emit('send', {'test': 'io.sockets.emit'}));
}
但它似乎並沒有在所有的工作。這是我的日誌的單一客戶端後,副本連接:
[[email protected] ~]$ node /var/www/node/apps/voidwalker/app.js
Listening on port: 8003
info - socket.io started
debug - client authorized
info - handshake authorized 4F7Zocz71RaQv7w5WOVg
debug - setting request GET /socket.io/1/websocket/4F7Zocz71RaQv7w5WOVg
debug - set heartbeat interval for client 4F7Zocz71RaQv7w5WOVg
debug - client authorized for
debug - websocket writing 1::
debug - websocket writing 5:::{"name":"message","args":[{"message":"Welcome to the chat!"}]}
我的開發者控制檯,返回此:
Loaded socket.io: SocketNamespace {socket: Socket, name: "/voidwalker/", flags: Object, json: Flag, ackPackets: 0…}
我期待看到我的CLI的console.log('TEST', data);
返回值時,客戶端連接,但它永遠不會出現。
瀏覽器控制檯中是否有任何錯誤消息?瀏覽器中的調試輸出是什麼?您已經添加了一些語句來跟蹤瀏覽器端發生了什麼,因此請與我們分享。 – GhostGambler
我添加了我的開發者控制檯的內容;)沒有錯誤消息。 –