Узел приложения Излученные данные клиента 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. Это отстой! Может быть, я пропустил код. Точно сказать не могу! В любом случае, теперь я могу видеть, как датчик движения меняется в моем браузере и телефоне.