Узел приложения Излученные данные клиента Primus не получены сервером Primus

У меня есть приложение AngularJS в качестве клиента Primus, и оно может без проблем подключаться к серверу Primus и осуществлять передачу на сервер Primus.

Я создал новое приложение NodeJS, но действует как клиент Primus. Он находится на той же машине, что и мой сервер Primus. Это код, который я использую для подключения к серверу Primus. Он может подключиться к нему, поскольку я вижу хэш, сгенерированный при подключении.

var http   = require('http'),
    server = http.createServer(),
    Primus = require('primus'),
    primus = new Primus(server, { transformer : 'sockjs' }),
    Socket = primus.Socket;

var client = new Socket('http://192.168.1.50:7777');

// prmius.use('emit', require('primus-emit'));
// client.use('emit', require('primus-emit'));

// primus.emit('motion-sensor-on', { isActive : true, area : 'living-room', src : 'node' });
client.emit('motion-sensor-on', { isActive : true, area : 'living-room', src : 'node' });

Client.emit выполняется, но сервер Primus не получает его. Это на одной машине. Я еще раз упомяну, что когда я запускаю приложение узла, оно может подключиться к серверу primus. Ранее я сначала попробовал primus.emit, но мой сервер primus тоже не может его получить.

1 ответ

Я наконец получил это работающее!!!

Ну, я только что добавил нового слушателя и имя события "данные". Похоже, если вы излучаете с сервера в качестве клиента, используя сокет или client.write, вы не должны указывать имя события. Так что мой последний рабочий код на сервере, действующий как клиент,

client.write({ isActive : true, area : 'living-room', src : 'node' });

затем на сервере primus код

spark.on('data', function(data) {
    console.log(spark.id, 'received message:', data);
    primus.write(data);
});

Я, честно говоря, не уверен, почему настраиваемые имена событий работают при использовании его в браузерах, но не при отправке изнутри вашего приложения NodeJS. Это отстой! Может быть, я пропустил код. Точно сказать не могу! В любом случае, теперь я могу видеть, как датчик движения меняется в моем браузере и телефоне.

Другие вопросы по тегам