我创建了一个Socket.IO服务器,它将列表详细信息推送到已连接的客户端。在浏览器中使用HTTP,一切都按照预期使用Web套接字工作,但是使用该服务的客户端类型之一严格来说是Flash(不是套接字回退,而是直接Flash)。我们正在使用AS3 Web Socket Client库。
当Flash客户端(由其他团队构建)尝试连接到服务器时,它会收到安全沙箱违规。我知道这与Socket.IO服务器提供的策略文件有关,但我完全不知道如何来提供这个文件。当我telnet 127.0.0.1 10843
或telnet 127.0.0.1 843
时,我没有得到回复。如果我记得,在过去的项目中,我们已经能够telnet到策略文件服务器以获得响应。这将是帮助我验证它是否正在服务的理想选择。
我知道默认端口是10843,并且还尝试设置为843。
以下是我所拥有的:
我有以下与策略文件相关的设置:
// Socket Setup
io.set('transports', ['websocket','flashsocket']);
io.set('flashPolicyServer', true);
io.set('flash policy port', 843);
抛开(可能),使用这些设置我在启动服务时也会出错(尽管它仍然开始):
Option flashPolicyServer is not valid. Please refer to the README.
Option flash policy port is not valid. Please refer to the README.
我不知所措。希望不是重复;我搜索得很高,并且相信我错过了一些小事。有什么建议吗?
答案 0 :(得分:2)
似乎Socket.IO开发人员决定摆脱一些传输,因此1.0
没有Flash传输支持。这有点令人困惑,因为在新文档中根本没有提到Flash传输存在。
在Socket.IO 0.9
中,您可以在socket.io文件夹中的某处找到WebSocketMain.swf
和WebSocketMainInsecure.swf
个文件。在1.*
中,没有任何扩展名为.swf
的文件。
因此,如果您需要Flash支持,则应使用以下命令安装Socket.IO 0.9
:
npm install socket.io@0.9
答案 1 :(得分:0)
根据socket.io documentation,启用Flashsocket传输时flash policy server
默认为true
。这意味着flashPolicyServer
(应该是flash policy server
)选项是不必要的。尝试在设置传输之前设置端口......就像这样。
io.set('flash policy port', 843);
io.set('transports', [ 'websocket', 'flashsocket' ])
这确保了当闪存套接字服务器启动时,它从该端口开始,而不是启动,被杀死然后使用新端口重新启动。此外,由于843是根端口,请确保它具有使用该端口的权限。
修改强> 似乎socket.io完全放弃了对flash的支持。他们的github上的文档是0.9.0。这令人困惑。虽然我没有尝试过,但有一种替代方案可能有用。 FlashSocket.io应该有助于满足您的需求。