3

私はここ数日、どこでも情報を見つけようとしてこれに苦労してきましたが、解決できませんでした.

基本的に、私はフラッシュ クライアント アプリとブラウザー (ソケット io に接続されたクロム ベースのアプリ) - nodejs サービス インスタンスを持っています。

ご存知のように、Chrome は websocket で動作し、私のフラッシュ アプリはフラッシュ ソケットで動作します。

クロムとノードの間ですべてがうまく機能しますが、フラッシュアプ​​リから何らかの操作を行うと、接続タイプがWebソケットではなくフラッシュソケットに低下し、サーバーがメッセージを送信し始めると、クロムWebアプリがサーバーから読み取ることができなくなりますフラッシュソケット。基本的に、フラッシュから何らかの操作を行うと、クロムはそれ以上情報を受け取りません。

フラッシュを介して情報を提供し続ける方法を知っていますか - flashsockets のノードだけでなく、ノード - chrome が websockets を介して通信することを保証しますか?

socket io の Web サイトにある socket io との接続に推奨されるライブラリを試してみました。それはこれですhttps://github.com/simb/FlashSocket.IO

また、WebSocket を使用する AS3 のライブラリを使用しようとしましたが、socket.io と適切に通信できないようです。これはhttps://github.com/y8/websocket-asです。接続しようとしたときに socket io が出力するメッセージは、「debug - destroying non-socket.io upgrade」です。

flashsockets と websocket を示すいくつかのデバッグ コードをここに示します。これは、同じソケット io サーバーに接続しようとしている 2 つのクライアント アプリです。

https://gist.github.com/4637617

助けてくれてどうもありがとう!

4

2 に答える 2

2

おかげさまで、多くの作業を経て、ようやく問題を解決できました。

Socket.io には、名前空間とルームを使用できる非常にスマートな実装があります。

ブラウザ用とフラッシュ用の 2 つの異なる名前空間で作業することで解決しました。

例:

 var browser = io.of("/browser").on('connection', function (socket) {
     socket.on('move', function (data) {
        browser.emit("move", {"left" : data.left, "top" : data.top});
     });
 });

 io.sockets.on('connection', function (socket2) {
     socket2.on('click', function (data) {
        browser.emit("move", {"left" : 1000, "top" : 50});
    });
 });

ボタンをクリックすると、Flash は「クリック」を送信し、ブラウザ名前空間内のすべてのブラウザにメッセージを送信します。

かなり便利です。

これが誰かに役立つことを願っています!

ではごきげんよう

于 2013-01-26T17:21:21.147 に答える
1

複数のトランスポートを使用してsocket.ioを構成する場合、クライアントが接続すると、使用可能な最適なトランスポートが選択されます。したがって、一方のクライアントがフラッシュのみを使用できる場合、それが使用され、もう一方のクライアントはxhr-pollingを使用する可能性があります。

デフォルトでは、websocket、htmlfile、xhr-polling、jsonp-pollingがありますが、flashsocketはありません。

詳細については、 https://github.com/LearnBoost/Socket.IO/wiki/Configure-Socket.IOを参照してください。

于 2013-01-26T02:30:33.813 に答える