0
我目前遇到Node JS的問題,試圖與會話身份驗證進行非常簡單的聊天。 認證正常,但socket.eon事件(客戶端)未捕獲到socket.emit事件(服務器端)。 這裏的代碼。 文件app.js:已解決 - nodejs上的通信 - socket.emit未正確捕獲socket.on
app.get('/chat', [requireLogin], require('./lib/chat.js').chat(io));
,將文件lib/chat.js:
exports.chat = function(io){
return function(req,res) {
res.render('chat');
var ent = require('ent'); // same as htmlentities for PHP
io.sockets.on('connection', function (socket) {
var username = ent.encode(socket.handshake.username);
console.log('first_connection:'+username);
socket.emit('first_connection', username);
socket.on('connect_success', function() {
console.log('connect_success:'+username);
socket.broadcast.emit('join', username);
});
});
}
};
和客戶端:
var sio = io.connect(), socket = sio.socket.of('/chat');
socket.on('first_connection', function (pseudo) {
console.log('first_connection is caught. Pseudo:'+pseudo);
document.title = pseudo + ' - ' + document.title;
socket.emit('connect_success');
});
我在客戶端沒有日誌,即登錄服務器端:
first_connection:Test
debug - websocket writing 5:::{"name":"first_connection","args":["Test"]}
如果有人能幫助我?
由於提前,
[編輯]這裏是IO插槽的聲明,在我的app.js文件:
const
express = require('express'),
path = require('path'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server),
fs = require('fs'),
connect = require('express/node_modules/connect'),
cookie = require('express/node_modules/cookie')
;
[編輯2] ,因爲我已經小於10在聲譽方面,我無法在接下來的8小時內回答我自己的問題。
我一步一步地回去,並重做相同,現在它運作良好。 我覺得我的問題來自安裝一個模塊,cookie,我忘了。
無論如何,謝謝! :)
NodeJS套接字沒有任何這些屬性。你大概在使用什麼庫? – OrangeDog
另外,請查看相關列表中的重複項。 – OrangeDog
感謝您的回答@OrangeDog :) 您在談論哪個屬性? 我編輯添加io套接字的聲明。 我在控制檯上實際上沒有錯誤,在服務器和客戶端也沒有錯誤。 – Tyrael