6

標準の TCP ソケットを介して通信するハードウェア デバイスへのクライアント インターフェイスがあります。Chrome などのブラウザで WebSocket を使用してこれに接続することは可能ですか? 接続に使用しているコードは次のとおりです。

var ws = new WebSocket("ws://127.0.0.1:13854");
ws.onopen = function() ...

これまでのところ、クライアントは最初の行で失敗しています。WebSockets が標準のローカル ソケットになじみのない独自のプロトコルを使用するという問題はありますか? 他のプロトコル ('http://...' および 'tcp://...') を指定しようとしましたが、うまくいきませんでした。

4

2 に答える 2

9

すでに説明したように、 WebSocketsは提供されたとおりにデータを送信するのではなく、データ ストリームにフレーミングとマスキングを追加します。したがって、WebSocket プロトコルを実装していないアプリケーションと通信するために WebSocket を使用することはできません。

ただし、回避策があります。Websockifyサーバーをプロキシとして使用して、Websocket クライアントと非 Websocket サーバーをブリッジすることができます。クライアントはアプリケーションと直接通信するのではなく、代わりに websockify サーバーと通信します。Websockify は、Websocket データ ストリームをアンパックし、サーバーに中継します。次に、サーバーからの応答が WebSocket フレームにパックされ、クライアントに送信されます。

于 2013-04-02T14:14:36.100 に答える
4

Web ソケットは特別なプロトコルを使用します。たとえば、すべての Websocket 接続は HTTP 接続として開始され、両者が HTTP 経由で Websocket プロトコルに変更することに同意した後、Websocket 接続に変更されます。申し訳ありませんが、websocket を使用して任意の TCP サーバーと通信することはできません。そのようなことをしたい場合は、おそらくフラッシュまたは Java アプレットを使用する必要があります。

于 2013-03-29T14:19:35.963 に答える