Node.js + Socket.io: клиент не получает сообщение - PullRequest
1 голос
/ 03 октября 2019

Я создаю очень простую систему чата между двумя клиентами. Хотя сервер может получать сообщение от клиента, он не может отправить сообщение клиенту (событие receiveMessage не инициируется, когда сервер отправляет сообщение клиенту). Ниже мой код на стороне клиента:

$("#send-msg").submit(function(e) {
    e.preventDefault(); 
    socket.emit("sendMsg", [$("#msg-text").val(), chattingWith]);
});

socket.on("receiveMessage", receiveMsg);

function receiveMsg(data) {
    console.log("received msg"); // NOT OUTPUTTED
}

Ниже мой код на стороне сервера:

var socket = io.connect();
var io = socket(server, { pingTimeout: 63000 }); 
io.sockets.on("connection", userConnect); 

function userConnect(user) {
    user.on("sendMsg", sendMsg);

    function sendMsg(msgData) {
        var msgContent = msgData[0];
        var receiverId = msgData[1];
        console.log("received message from " + receiverId); // ACTIVATED
        io.to(receiverId).emit("receiveMessage", [msgContent, receiverId]);
    }
}

1 Ответ

0 голосов
/ 03 октября 2019

Я думаю, вам следует немного изменить свой код: Клиентская сторона (я предполагаю, что chattingWith - это уникальный номер комнаты или чата):

$("#send-msg").submit(function(e) {
   e.preventDefault(); 
   socket.emit("send message", $("#msg-text").val(), chattingWith);
});

socket.on("send Message", receiveMsg);

function receiveMsg(data) {
  console.log(data); //An array should be an output
}

Код серверной стороны:

io.on('connection', function(socket){
 socket.on('send message', function(data, id){
        socket.join(id)
        io.sockets.in(id).emit('sendMessage', {
            data: data,
        })
    })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...