【问题标题】:is it possible to use flash sockets and websockets simultaneously with socket io?是否可以与套接字 io 同时使用闪存套接字和 websockets?
【发布时间】:2013-01-09 17:42:58
【问题描述】:

我已经为此苦苦挣扎了几天,试图到处寻找信息,但我无法解决。

基本上,我有一个 Flash 客户端应用程序和一个浏览器 - 基于 chrome 的应用程序连接到一个套接字 io - nodejs 服务实例。

如您所知,Chrome 可以通过 websockets 运行,而我的 flash 应用可以通过 flash sockets 运行。

chrome 和 node 之间一切正常,但是当我从我的 flash 应用程序进行任何交互时,这会将连接类型降级为 flash 套接字而不是 websockets,从而导致 chrome web 应用程序无法从服务器读取,因为服务器开始使用 flashsocket 发出消息。基本上,当我从 Flash 进行任何交互时,chrome 不再接收任何信息。

您知道有什么方法可以通过 flash - 节点在 flashsockets 中继续提供信息,同时还保证节点 - chrome 通过 websockets 进行通信?

我已经尝试了与 socket io 连接的推荐库,您可以在 socket io 网站上找到该库;就是这个https://github.com/simb/FlashSocket.IO

我还尝试在 AS3 中使用一个使用 websockets 的库,但似乎无法与 socket.io 正确通信;就是这个https://github.com/y8/websocket-as。尝试连接时socket io输出的消息是“debug - destroying non-socket.io upgrade”

这里有一些调试代码,显示flashsockets和websocket,这是我的两个客户端应用程序试图连接到同一个socket io服务器:

https://gist.github.com/4637617

非常感谢您的帮助!

【问题讨论】:

  • 嗯?镀铬插座和闪光灯插座有什么关系???
  • 浏览器通过websockets与socketio通信,flash通过flashsockets与socketio通信,当使用flashsockets时,socketio将传输模式更改为flashsockets,阻止浏览器通过websockets通信再次与socketio建立通信跨度>
  • 同浏览器同端口去图,服务器混在一起

标签: actionscript-3 node.js google-chrome websocket socket.io


【解决方案1】:

谢谢,经过大量的工作,我终于设法解决了这个问题。

Socket.io 有一个非常智能的实现,允许您使用命名空间和房间。

我通过在两个不同的命名空间中工作解决了这个问题:一个用于浏览器,另一个用于 flash。

例子:

 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 会发送“点击”,然后我会向浏览器命名空间中的所有浏览器发送一条消息。

非常有用。

我希望这对某人有帮助!

一切顺利

【讨论】:

    【解决方案2】:

    如果您使用多个传输配置 socket.io,当客户端连接时,它将选择最佳可用传输。因此,如果一个客户端只能使用 flash,那么它将使用它,而另一个客户端可能会使用 xhr-polling。

    默认情况下,您有 websocket、htmlfile、xhr-polling、jsonp-polling,但没有 flashsocket。

    更多详情请参阅https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

    【讨论】:

    • 非常感谢帕斯卡!是的,这正是我的观点。问题是这种行为会导致浏览器停止从服务器读取信息,因为 google chrome(或最新版本的 firefox,例如)不再支持 flashsockets。所以,基本上一切正常,直到我的 Flash 客户端参与,打破了唯一的 websockets 浏览器。我想要的是服务器以正确的方式与每个客户端传输类型进行通信。通信适用于每种客户端类型,但不是当两种类型 - flashsockets 和 websockets - 同时参与时!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2019-02-20
    • 2022-09-28
    • 2014-01-03
    相关资源
    最近更新 更多