Доступ к NodeJS/Socket.io через PHP и cURL

Я запускаю сервер nodejs/socket.io (v 0.7) для передачи данных веб-клиентам. Это отлично работает.

Чтобы расширить приложение, мне нужно вызвать / повлиять на socket.io через php. Я знаю решение, которое работает с cURL через http с http-сервером nodejs.

Одним из возможных решений является запуск сервера socket.io и http-сервера nodejs в одном и том же app.js. Клиенты подключаются и взаимодействуют с socket.io, и единственное разрешенное подключение к «отдельному» http-серверу (конечно, прослушивание другого порта, кроме socket.io) осуществляется с 127.0.0.1 соответственно с php-сервера через cURL.

Поскольку оба сервера находятся в одной области, http-сервер может инициировать события на сервере socket.io.

Мой вопрос: есть ли в этом смысл? Есть ли более чистое решение для запуска событий на socket.io из PHP?


person helix    schedule 03.08.2011    source источник


Ответы (3)


Я думаю, что это разумный и прямой путь; кажется, что рекомендуется соблюдать осторожность при работе с порядком выполнения, но это, вероятно, просто моя неуверенность в отображении узла.

person Paul Sonier    schedule 03.08.2011

Я пишу решение, которое, по моему мнению, очень похоже на pusher API. Он использует концепцию помещения (канала). С маршрута через express я могу свернуть (через PHP) для отправки сообщений в комнату (канал).

io.sockets.in('your room').json.send('your json');

Я хотел бы открыть исходный код этого проекта в будущем (надеюсь, в течение недели), но, надеюсь, вы поняли картину.

person Alfred    schedule 03.08.2011
comment
Привет, Альфред, не знаю, это то, что я ищу. В любом случае, если у вас есть что-то отличное и с открытым исходным кодом, не забудьте опубликовать ссылку здесь, когда закончите! - person helix; 04.08.2011
comment
Вы когда-нибудь публиковали свое решение? Я очень заинтересован в этом. - person EsTeGe; 19.07.2012
comment
@EsTeGe Я регрессировал: $, но я хотел бы продолжить работу над этим. - person Alfred; 19.07.2012
comment
Возможно, вы можете создать для него репозиторий на github, чтобы сообщество могло вам помочь. - person EsTeGe; 19.07.2012
comment
Я думал об этом :). Я постараюсь выложить что-нибудь на github в ближайшее время. - person Alfred; 19.07.2012

socket.io с версией выше 1.3.3 (может быть старше), вы можете инициировать событие отправки, как показано ниже.

//send broadcast message to all connecting clients
io.emit([message event],[your message body obj or str]);

// send to specific user
io.to([your room]).emit([message event], [your message body obj or str]);
person plusmancn    schedule 04.02.2015