2015-07-02 2 views
1

Моя цель - реализовать клиент websocket в JavaScript с определенным протоколом.NodeJS && браузер кросс-совместимый клиент websocket

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

Также на github repo ws Пакет NodeJS, который является самым популярным, я думаю, что он возвращает global.WebSocket, который имеет несколько иной API. Могу ли я использовать его для независимого от платформы клиентского приложения?

Спасибо за любой ответ.

+0

У вас есть хорошее решение для этого? – zixia

+0

Проект несколько лет, но я помню, что я использовал браузер для связывания приложения и что мне пришлось написать небольшую оболочку, в которой использовался другой API на платформе. – JeFf

+0

Не могли бы вы поделиться какой-то частью своего кода? Потому что я снова сталкиваюсь с этой проблемой, и, похоже, нет простых и хороших решений (очень странно). – zixia

ответ

0

В конце я использовал https://websockets.github.io/ws/ пакет для NodeJS, который совместим с API-интерфейсом браузера WebSocket.

var WebSock = global.WebSocket || global.MozWebSocket || require('ws'); 

this.sock = new WebSock(url, this.subProtocol); 
this.sock.onopen = (evt) => {}; 
this.sock.onmessage = (msg) => {}; 
this.sock.onerror = (err) => {}; 
0

В зависимости от конкретных требований, я нашел Socket.io хорошо работать для обоих NodeJS (используя socket.io-client и браузер. Он делает больше, чем просто WebSockets, хотя поэтому убедитесь, что и смотреть в него больше, поскольку он не может удовлетворить ваши конкретные цели.

Я использую его для очереди задач и был доволен.

0

Посмотрите на sockjs для SockJS-клиента в качестве клиентской библиотеки JavaScript и SockJS-узел для реализации сервера. http://sockjs.org