問題タブ [sockjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
websocket - sockjs-tornadoメソッド内からの非同期呼び出し
私はsockjs-tornadoでサーバーを構築していますが、tornadoの非同期HTTPクライアント、またはasyncmongo、tornado-redisなどのtornadoの他の非同期機能をどのように利用できるのでしょうか。どうやらtornado.web.asynchronous
&tornado.gen.engine
デコレーターを使用することはできません。ランダムな方法で。したがって、SockJSConnection内から非同期のMongo / HTTP / Redis呼び出しを行う必要がある場合on_message()
、どのようにすればよいですか?
websocket - SockJSのJSONメッセージ-トルネード
SockJS on_message()
-Tornadoライブラリのメソッドで、JSONメッセージをクライアントに送信したいと思います。メソッドを使用して特定のクライアントに送信する場合send()
もあれば、メソッドを使用してクライアントのグループに送信する場合もありますbroadcast()
。
simplejson
メッセージを送信する前に、文字列キーの辞書オブジェクトを自分でエンコードするようなものを使用する必要があるかどうか疑問に思います。
または、エンコーディング部分はすでにSockJS-Tornadoによって処理されていますか?さらに、メソッドのmessage
引数on_message()
も常にJSONオブジェクトであるというのは本当ですか?
node.js - NodeJSの耐久性/永続性を備えたSockJS(websocket)を介して接続するにはどうすればよいですか?
ユーザーがページをリロードしている間、SockJS (websocket) 経由で接続された NodeJS の接続を永続的に (切断しないで) 管理するための最良のソリューションは何ですか?
セッションでそれを行うことはできますか?
python - Vertx SockJS サーバーと sockjs-tornado
独立した Python サーバーを使用して sockJS を介して Web ソケットをサポートするための 2 つの同様のソリューションを調査してきましたが、これまでに 2 つのソリューションを見つけました。
複雑でスケーラブルな Web ソケット ベースの Web アプリケーションを作成する必要があります。残念ながら Tornado をスケーリングするのは難しく、Web ソケットの水平方向のスケーリングには Vertx の方が優れているようです。
また、Redis を Tornado と組み合わせて使用して、pub/sub システムを水平方向にスケーリングし、HAproxy を使用して SockJS リクエストをスケーリングできることも理解しています。
Vertx と Tornado の間で、SockJS をサポートするスケーラブルなシステムを作成するための推奨されるソリューションは何ですか?
erlang - Websocket 接続を処理するカウボーイ プロセスとのリンク (カウボーイ、アーラン)
カウボーイとsockjsの両方を使用するerlangアプリを開発していますが、websocket接続を処理するカウボーイプロセスとリンクすることは可能でしょうか?
現在、gen_server の動作を伴うプロセスは、各 websocet 接続に関連付けられています。このようなプロセスは Conn インスタンスを init に格納し、クライアントが接続を閉じると、このプロセスは websocket ハンドラーから終了します。gen_server プロセスが終了すると、クリーンアップを行う gen_server の terminate() から Conn:close が呼び出されます。それは機能しますが、trap_exit が有効になっていても終了関数が呼び出されない場合がいくつかあるため、このソリューションは好きではありません。したがって、リンクが可能であれば、より簡単なソリューションになります。
websocket - Websocket ハンドシェイクが HAProxy でハングする
最新の Chrome ブラウザーで、sockjs
クライアントを使用して、背後にあるバックエンド サーバーと通信しようとしていますhaproxy
。私のローカルホスト (途中ではない) では、これは正常に機能しています。クライアントは、プロトコルhaproxy
を使用してメッセージを接続、送受信できます。websocket
例えば:
を使用してサーバーにデプロイすると、接続が開いていると思われるHAProxy
奇妙なことが起こります (コンソール ログに「msg sent」が表示されます) 。以下は、ログに表示されるものです。sockjs
conn.readyState === SockJS.OPEN
websocket
haproxy
2 番目のログ メッセージは、バックエンド サーバーをシャットダウンしたときにのみ表示されることにhaproxy
注意してください。シャットダウンする前に、ログにエラーはありませんが、websocket ハンドシェイクは完了せず、サーバーはメッセージを受信しません。
Chrome の開発者ツールを使用すると、[ネットワーク] タブに次のように表示されます。
そして、オブジェクトの「タイプ」と「時間遅延」の両方がwebsocket
、開発者ツールのネットワークタブの下に「保留中」と表示されます。
最後に、これは私のhaproxy
設定です (バージョン 1.4.22):
なぜこれが起こっているのか誰にも分かりますか?haproxy
サーバーの構成、または一般的なネットワーク設定 (例iptables
)が原因ですか?
http-pretend-keepalive
PS で有効にしようとしましhaproxy
たが、機能しません。
python - サンダープッシュ監視
Thunderpushは、Tornado および SockJS ベースのプッシュ サービスです。Beaconpush (beaconpush.com) にインスパイアされた HTTP API とクライアントを提供します。
使用状況の統計とパフォーマンスを監視する方法を知りたい
python - Sockjs-竜巻とRPC
私は自分のサイトにsockjs-tornadoサーバーを追加しようとしていますが、MsgPackを介して(msgpack-rpc-pythonを使用して)他のアプリに接続することを決定するまで、すべて正常に機能しました。そして今、sockjsサーバーまたはRPCサーバーのどちらかで動作します。それらのどちらから開始するかに応じて、最初にループを開始します。
両方に1つのtornado.ioloopを使用する必要があると思います。しかし、それを達成する方法がわかりません。または、竜巻サーバーにrpcを追加する別の方法があるかもしれませんか?
msgpack-rpc-pythonを使用したsockjs-tornadoサンプルコードは次のとおりです。
`
どんな提案や例でも大歓迎です!
https - SockJS が IE9 で問題を抱えている
ここで同様の失敗の報告を見ました: https://groups.google.com/forum/?fromgroups=#!topic/sockjs/QNtA1_p_arU、しかし私の問題は違うようです。
私のセットアップ: クライアントはhttps://www.mysite.com/sockjs
SockJS に接続し、実際のページは で提供されhttps://www.mysite.com/blah/blah/blah
ます。ページ上のすべての外部要素 (css や js など) は、SockJS-Client (https://d1fxtkz8shb9d2.cloudfront.net/sockjs-0.3.js、最新リリースでは 0.3.4 である必要があります) を含むhttpsで提供されます。バックエンドは SockJS-Tornado で作成されています。
問題 1 : 次のプロトコルを使用するように指定します。
iframe-htmlfile
ただし、サーバーログに次のように表示されるように、IE9 は単に最悪のプロトコルを使用しているようです。
xdr-streaming
orを使用しないのはなぜxdr-polling
ですか? SockJS doc では、これらの 2 つのプロトコルに「IE8, 9 (cookies=no)」というラベルが付けられていますが、これは、ブラウザーで Cookie が無効になっている場合にのみ SockJS がそれらを使用することを意味しますか?
問題 2 : protocoliframe-htmlfile
を使用すると'Only Secure Content is Displayed'
、混合コンテンツの問題を示す警告がページに表示されます。ただし、テスト済みの他のブラウザー (Chrome、FireFox、Safari など) ではこの警告は報告されず、前述のように、ページ上のすべての外部リソースは https を介して提供されます。どうしてこれなの?使用されているこの特定のプロトコルに関連していiframe-htmlfile
ますか?
同時に、SockJS はサーバーへの接続とメッセージの送信に苦労します。これは、サーバーログに表示されるものです。
最後のエラーはタイムアウトのようです。IE9 で警告ダイアログを閉じると、接続が開いているように見えますが、その後ブラウザからメッセージが受信されません (ブラウザは、接続が開くとすぐにメッセージを送信する必要があります)。これは以前の混合コンテンツ警告と関係があるのだろうか。
html - 同じマシン上の 2 つの異なるブラウザーが両方とも websocket を使用してサーバーに接続できますか?
同じマシン (つまり同じ IP) に 2 つの異なるブラウザー (Chrome と Safari) がありますが、両方とも websocket を使用して同じサーバーに接続できるのでしょうか?
私はもう試した。Chrome は正常に接続しますが、Safari は次のようなエラーをスローします。
しかし、これが IP アドレスごとに 1 つの websocket 接続という何らかの制限によるものかどうかはわかりません。