Несоответствие пространства имен Python SocketIO-клиента и сервера nodejs socket.io - PullRequest
0 голосов
/ 03 мая 2018

Мой внутренний сервер (nodejs) определяет новое пространство имен с помощью var clients = io.of('/clients'). Это выглядит примерно так:

clients.on('connection', function(socket) {
    socket.on('descriptor', function(data) {
        // do something cool here
    }
});

Мой клиент Python выглядит примерно так:

from socketIO_client import SocketIO, 

class ClientNameSpace(BaseNamespace):

    def on_connect(self):
        logger.info("connected")
        socketIO.emit("descriptor", "some cool data")

socketIO = SocketIO('127.0.0.1', 80)
clientSocket = socketIO.define(ClientNameSpace, '/clients')
socketIO.wait()

При выполнении этого кода метод дескриптора на сервере никогда не вызывается (я предполагаю, что он не находится в пространстве имен /clients). Но я не могу использовать clientSocket внутри ClientNameSpace, так как он говорит, что он не определен. Я предполагаю, что класс активируется, как только конструктор SocketIO() активируется, а clientSocket не создается до тех пор, пока не будет.

1 Ответ

0 голосов
/ 08 октября 2018

Не думаю, что вы все настроили правильно. попробуйте вместо этого вызвать emit на clientSocket, и я также считаю необходимым иметь хотя бы один обратный вызов, не уверенный, что это все еще так. Так что определите clientSocket.on («имя метода», обратный вызов);

...