Недавно я пытался интегрировать nodejs с моим существующим проектом, чтобы убедиться в реальном обновлении фидов. Таким образом, я использовал следующий плагин yii и выполнил инструкцию:
https://github.com/oncesk/yii-node-socket
Хост и порт: bigcat, 3001 соответственно, и я настроил их в console.php и main.php, как упоминалось. Я запустил сервер узлов, и журнал показал, что он прослушивает:
Listening bigcat:3001 Set origin: bigcat:*
На моей стороне клиента у меня есть следующие коды (я создал его как внешний javascript):
// create object and connect to web socket server var socket = new YiiNodeSocket(); socket.on('event.example', function () { console.log('*****Trigger test.event, is a global event, for all clients*****'); }); socket.onConnect(function () { socket.room('example').join(function (isConnected, numberOfRoomClients) { if (isConnected) { // catch test.event only for this rooom console.log('***Joined into room example: members count [' + numberOfRoomClients + ']*****'); this.on('example.room.event', function (data) { console.log('****WORKING****'); }); } }); });
Моя консоль записывает, что клиент успешно подключен. У меня на домашнем методе проверки контрола у меня есть следующий код:
$event = Yii::app()->nodeSocket->getFrameFactory()->createEventFrame(); $event->setRoom('example'); $event->setEventName('example.room.event'); $event['type_string'] = 'hello world'; $event['type_array'] = array(1, 2, 3); $event['type_object'] = array('one' => 1, 'two' => 2); $event['type_bool'] = true; $event['type_integer'] = 11; $event->send();
Когда я вызываю метод тестирования homeController в другом браузере, мой клиент должен иметь возможность прослушивать событие, а консоль должна печатать «IT WORKING». Однако этого не происходит. В моем журнале отображается следующая ошибка:
warn: handshake error INVALID SERVER: server host 127.0.0.1 not allowed for /server debug: websocket writing 7::/server:undefined
Коды на стороне сервера, похоже, вообще не работают. Могу ли я получить советы о том, как это сделать. Я чувствую, что я близка и далека.
Параметр server.config.js:
module.exports = { host : 'bigcat', port : parseInt('3001'), origin : 'bigcat:*', allowedServers : ["127.0.1.1"], dbOptions : {"driver":"dummy","config":[]}, checkClientOrigin : 1, sessionVarName : 'PHPSESSID' };