Я знаю, что эта проблема неоднократно поднималась в стеке потока. Я пробовал использовать все другие решения для работы со стеком, но ни одно из них не работает для меня. У меня есть сервер сокета nodejs, который получает какое-то сообщение и в зависимости от какого-либо условия выдает другое событие. Вот детали используемых пакетов:
- @ types / express ":" ^ 4.17.2 "
- @ types / node": "^ 13.1.7" ,
- @types/socket.io ":" ^ 2.1.4 "
- " express ":" ^ 4.17.1 "
- " socket.io " : "^ 2.3.0"
server.ts
import * as socketio from "socket.io";
import * as express from "express";
import * as http from "http";
const app = express();
const server = http.createServer(app);
const io = socketio(server);
io.on("connection", (socket) => {
console.log("A user has connected to the socket!");
socket.on('disconnect', () => console.log('A user has disconnected from the socket!'));
socket.on('message', function (data) {
console.log('Message received : ' + data);
// socket.emit('C1', data);
// io.sockets.emit('C1', data);
// socket.broadcast.emit('C1', data);
// io.emit('C1', data);
});
socket.on('C1', (data) => {
console.log("Data received on C1 : " + data);
});
});
server.listen(3000, () => {
console.log(`Application listening on port ${process.env.PORT || 3000}!`);
});
Я попытался использовать все закомментированные методы emit (), которые я нашел на другие решения для работы со стеком, но ни одно из них не работает для меня
// socket.emit('C1', data);
// io.sockets.emit('C1', data);
// socket.broadcast.emit('C1', data);
// io.emit('C1', data);
Я использую Python клиент с пакетом pip socketIO-client-nexus 0.7.6
client.py
import logging
import time
from socketIO_client_nexus import SocketIO, LoggingNamespace
while True:
time.sleep(0.5)
with SocketIO('localhost', 3000, LoggingNamespace) as socketIO:
socketIO.emit('message',"hello world")
Мой python клиент работает нормально, и я могу получить сообщение "hello world" на моем сервере узлов. Однако, когда я пытаюсь выдает то же сообщение с событием "C1", ничего не происходит.
Если у кого-то есть идеи, как решить эту проблему, вы очень приветствуете.
Спасибо.