問題タブ [em-websocket]

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.

0 投票する
1 に答える
520 参照

ruby - WebSockets:クライアント接続が切断されたときにすべてのサブスクライバーに通知するにはどうすればよいですか?

私が取り組んでいるWebSocketチャットデモがあります(このコードに基づいています)。ただし、クライアントとサーバー間の接続が閉じられたときに機能していないように見える部分は、ユーザーが「チャットルームを離れた」ことをすべてのサブスクライバーに通知したいと思います。クライアント接続が切断されたときにサーバーに通知/onclose関数を実行すると思いましたが、WebSocketの動作とは異なる場合があります。

これが私のEventMachineコードです:

0 投票する
2 に答える
743 参照

ruby - Ruby:同じアプリケーションから静的 HTML と EventMachine WebSocket サーバーを提供する方法は?

私は簡単なチャットアプリケーションを書いています。必要な唯一の「フロントエンド」は、単一の html ファイル、javascript ファイル、およびいくつかのスタイルシートです。アプリケーションの大部分は、サーバー側の EventMachine WebSocket サーバーです。

また、これを Heroku でホストしようとしています。

現在、静的ファイルを提供するだけのsinatraアプリと、WebSocketサーバーを提供する別のアプリ(別のポート)があります。

ポート 80 (静的ファイル用) と WebSocket サーバー用の別のポートにサービスを提供/応答する 1 つのアプリケーションを起動できるように、これらを組み合わせる方法はありますか?

0 投票する
1 に答える
2199 参照

ruby-on-rails - RailsのEventMachine-実行ループをどこに置くか?

別のプロセスとしてではなく、Railsサーバーを実行するときに実行されるEventMachineサーバーを取得しようとしています。

したがって、たとえば、ここの単純なサーバーの例(em-websocket)を使用すると、次の(スタンドアロン?)ルビーコードが得られます。

コマンド「railsnewem-example」を実行したとすると、上記のコードは私のrails 3アプリのどこに配置されますか

上記のコードは、理想的には別のスレッド(またはファイバー..?)で実行する必要があると思いますが、どのように見えるかはわかりません。

Webサーバーとして「thin」を使用すると、これは簡単なはずです。Herokuはデフォルトでこれを使用しているようで、ローカルでもテストできるように「薄い」gemをインストールしました。

0 投票する
1 に答える
255 参照

html - Websocket-完全なメッセージを保証しますか?

Webソケットプロトコルで「onmessage」イベントが発生した場合、完全なメッセージが保証されますか、それとも最初にデータをバッファリングしてからパケットを抽出しようとするストレートTCP接続のようなものです。

0 投票する
1 に答える
2252 参照

ruby - Webソケットを使用してサーバーからクライアントに何らかの形式(JSON / XMLなど)でデータを送信する方法

gemの例に従ってem-websocket、Sinatraフレームワークで実行される単純なエコーサーバーを作成しました。問題は、プレーンテキストの代わりに何らかの形式を使用してメッセージを送信する方法がわからないことです。今のところ、コードは次のようになります。

ハッシュなどの形式でメッセージを送信したいと思います。

また、クライアント側では、時間とテキストのdivを含む素敵なメッセージボックスを作成するために使用します(この場合、時間は単なる例です)。例:

それ以外の

0 投票する
3 に答える
4503 参照

ruby-on-rails - Ruby on Rails を使用した em-websocket gem

em-websocket gem を使用して、Web ソケット ベースのゲームの開発を開始しました。

アプリケーションをテストするには、実行してサーバーを起動します

$> ruby​​ server.rb

次に、html ファイル (Web サーバーなし) に直接アクセスする 2 つのブラウザーを開き、再生を開始します。

しかし今は、Web サーバー、いくつかのデータベース テーブル、その他の Ruby on Rails ベースの gem を追加したいと考えています。

Web ソケット サーバーと Ruby on Rails アプリケーション間の通信をどのように実現しますか? 同じサーバーで実行し、単一のプロセスとして実行する必要がありますか? 別々のサーバーで実行し、AJAX を介して通信しますか?

認証や、ゲーム終了時のデータベースの更新などの機能をサポートする必要があります。

前もって感謝します。

0 投票する
1 に答える
1019 参照

ruby-on-rails - 薄いレールでem-websocketを安全に停止する

EventMachine実行ループを利用するためにシンサーバーで実行しているRailsアプリがあります。問題は、em-websocketを含めて、wsから着信する情報を処理し、EM実行ループを停止せずにWebsocketを停止および開始できるようにすることです。これが私がWebSocketを開始する方法です。

問題は開始/停止コードにあります。em-websocketのドキュメントから

問題は、内部em-websocketコードがEM:start_serverからの署名を追跡せず、EventMachine :: stop_server(signature)を呼び出してシャットダウンできることです。em-websocketを変更せずにこれらの関数をオーバーライドして、これらのWebSocketを安全に開始/停止できるようにする方法はありますか?標準のEventmachineサーバーのように機能するかどうかを確認します。

0 投票する
2 に答える
3332 参照

ruby-on-rails - 多数のWebSocket接続

特定のタスクのユーザー間でプッシュされたコンテンツを追跡するアプリケーションを作成しています。WebSocketを使用して新しいコンテンツを送信することを考えています。これは、その特定のタスクで現在アプリを使用しているすべてのユーザーが利用できるためです。

私はこれをRailsで書いていますが、クライアント側のアプリはiOS上にあります(おそらくAndroidでも使用される予定です)。このWebSocketソリューションは適切に拡張できない可能性があります。私は、WebSocketとある種のポーリングソリューションを使用することを決定する際に、いくつかのアドバイスと考慮事項を求めています。

Ruby on Railsサーバー(Herokuなど)は、同時に開く多数のWebSocketをサポートしますか?議論のために百万の接続を考えてみましょう。誰かが私にそのようなものを提供できる資料はありますか?

このように設計した場合、サーバーホスティングのコストははるかに高くなりますか?

何百万ものWebSocketを同時に維持することさえ可能ですか?これは最良の設計上の決定ではないかもしれないと私は感じています。

これは、適切なRailsAPIでの私の最初の試みです。アドバイスをいただければ幸いです。どうも。

0 投票する
1 に答える
248 参照

ruby - イベントマシンのWebSocket接続をクラスレベルで保存しても安全ですか?

私は、ユーザーが彼の友人の1人とメッセージを交換できるチャットサーバーアプリケーションを書いています。ユーザーが接続すると、接続をクラス変数ハッシュに保存します。

@@connections[:user_id] = conn

誰かがユーザーにメッセージを送信するとき、私はハッシュで彼の接続を探し、それを介してメッセージを送信します。クライアントが単に停止し、oncloseコールバックが呼び出されない場合があります。

0 投票する
2 に答える
1283 参照

ruby - Websockets、em-websocket & HAProxy 502 エラー

ポート 80 で Web サーバーと Websocket サーバーを実行しようとしています。これを行うには、HAProxy を使用して、この構成を使用して接続をルーティングしています。

Google Chrome を使用してテストしています。一部のマシンでは問題なく接続できますが、他のマシンでは 502 エラーが発生し、em-websocket が次のエラーをログに記録します。

プロキシの実行を停止し、ポート 80 で Web ソケット サーバーを実行すると、問題がプロキシにあることがわかります。アップグレード パケットが有効な HTTP ではないため、Websocket を処理するときに HAProxy を http モードで実行してはならないことをどこかで読みましたが、これは私が見ている問題と関係があるのでしょうか?