2016-10-24 20 views
0

WebSocketクライアントをネイティブGo実行プラットフォームとGopherJSの両方で動作させる方法に関する一般的なガイダンスを探しています。WebSocketとGopherJSの互換性

GopherJSには2つのWebSocketライブラリがあり、1つはgopherjs/websocketに、もう1つはgoxjs/websocketにあります。 goxjs/websocketは "isomorphic"なので、GopherJSで動作するはずですが、golang.org/x/net/websocketとAPI互換のままであるはずです。どちらの実行環境でも互換性が得られますが、これが最適なソリューションかどうかはわかりません。 gopherjs/websocketはブラウザの実行環境の外で動作するようには見えないので、スターターではありません。

ネイティブGoアプリのWebSocket実装の中で最も推奨されるのは、現時点ではgorilla/websocketのようです。私はこれが良いAPIを持っていると思われるので、これを使用したいと思うし、それはむしろ完全に機能しているようだ。私がgorilla/websocketをインポートした場合、が成功しましたgopherjs buildですが、JavaScript環境で失敗するか、ブラウザのWebSocket APIの実装を使用しないJavaScriptにコンパイルされることが懸念されます。

私はどのライブラリがどのシナリオに適しているかについて多くの指針を見ていないので、これを比較して対比させ、良い選択をするのに必要な方向性を提供することができれば幸いです。

答えて

1

私はあなたが何をすべきか上の任意のガイダンスを持っていないが、これらの事実を共有することができます。

ゴリラ/ WebSocketのパッケージには、TCPコネクション上のWebSocketプロトコルの実装です。ブラウザアプリケーションはTCP接続に直接アクセスできないため、gorilla/websocketパッケージはブラウザでは実行されません。

gorilla/websocketパッケージとgopherjs/websocketパッケージで提供されるモデルには違いがあります。 WebSocketプロトコルはメッセージベースであり、gorilla/websocketパッケージはメッセージの周りにAPIを公開します。 gopherjs/websocketは、メッセージベースのWebSocketプロトコルをバイトストリームのように見せるためのバインディングを提供します。メッセージはgopherjs/websocket APIに公開されていません。

x/net/websocketパッケージはすべて放棄されました。対処されていないlong standing issues with protocol complianceがあります。