2014-02-27 1188 views
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,我忘了。

无论如何,谢谢! :)

+0

NodeJS套接字没有任何这些属性。你大概在使用什么库? – OrangeDog

+0

另外,请查看相关列表中的重复项。 – OrangeDog

+0

感谢您的回答@OrangeDog :) 您在谈论哪个属性? 我编辑添加io套接字的声明。 我在控制台上实际上没有错误,在服务器和客户端也没有错误。 – Tyrael

回答

0

好吧,我一步一步地回去,并重做相同,现在它运作良好! 我觉得我的问题来自安装一个模块,cookie,我忘了。

无论如何,谢谢! :)

相关问题