是否可以与插座io同时使用闪光灯插座和腹板?

时间:2013-01-25 17:32:53

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

我一直在努力解决这个问题,试图在任何地方找到信息,但我无法解决。

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

如您所知,Chrome适用于websockets,而我的Flash应用程序可通过闪存套接字工作。

Chrome和节点之间的一切运作良好,但是当我从我的Flash应用程序进行任何交互时,会降低连接类型到闪存套接字而不是网页框,使得Chrome网络应用无法从服务器读取,因为服务器开始使用flashsockets发出消息。基本上,当我从flash进行任何交互时,chrome不再接收任何信息。

你知道如何通过闪存插槽中的flash节点继续提供信息,还能保证node-chrome通过websockets进行通信吗?

我已尝试推荐的库与socket io连接,你可以在socket io网站找到它;这是https://github.com/simb/FlashSocket.IO

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

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

https://gist.github.com/4637617

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

谢谢,经过大量工作后,我成功地解决了这个问题。

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发送“click”。

很有用。

我希望这有助于某人!

一切顺利

答案 1 :(得分:0)

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

默认情况下,你有websocket,htmlfile,xhr-polling,jsonp-polling,但不是flashsocket。

有关详细信息,请参阅https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO