【问题标题】:Communication on nodejs - socket.emit is not correctly caught by socket.onnodejs 上的通信 - socket.emit 未被 socket.on 正确捕获
【发布时间】:2014-03-30 18:36:03
【问题描述】:

我目前遇到了 Node JS 的问题,试图通过会话身份验证进行非常简单的聊天。 authent 没问题,但是 socket.emit 事件(服务器端)没有被 socket.on 事件(客户端)捕获。 这里是代码。 文件 app.js:

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')
;

【问题讨论】:

  • NodeJS 套接字没有任何这些属性。您大概在使用什么库?
  • 另外,检查相关列表是否有重复项。
  • 感谢@OrangeDog 的回答 :) 你在说哪个属性?我编辑添加了 io 套接字的声明。我实际上在控制台上没有错误,在服务器端和客户端也没有。

标签: node.js socket.io


【解决方案1】:

好的,我一步一步返回并重做相同的操作,现在效果很好! 我认为我的问题来自安装了一个我忘记的模块 cookie。

还是谢谢! :)

【讨论】:

    猜你喜欢
    • 2020-07-09
    • 2013-05-12
    • 2012-09-24
    • 2018-12-27
    • 2017-11-28
    • 1970-01-01
    • 2017-02-05
    • 2019-02-07
    • 2018-10-02
    相关资源
    最近更新 更多