node.js - Web 套接字和 Flash 套接字客户端连接到一个 Node.js

标签 node.js actionscript-3 websocket flashsocket engine.io

我在将 Flash 客户端连接到 Node.js 服务器时遇到问题。

短篇故事:

我第一次构建一个 Node.js 服务器,该服务器应该由 Web 客户端 (WebSocket) 和 Flash 客户端 (Socket) 使用。当然,网络客户端工作起来就像一个魅力,但我无法克服 Flash 客户端。我收到 SECURITY_ERROR。经过一天的研究,我认为这是因为策略文件未加载。想法(engine.io 之上的 primus)?

长话:

我正在使用Primus因为我认为我需要它,因为我有网络套接字和闪存套接字要处理。不确定这是否准确? :)

我正在使用Engine.io作为“转换器/传输器” - 该层使用的主要框架。我不会讨论标准 Web 客户端(使用 Chrome 和 primus-client),因为它很容易设置。

我在 AS3 中使用简单且标准的套接字:

_socket = new Socket();
_socket.addEventListener(Event.CONNECT, onSocketConnect);
//...
_socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
_socket.addEventListener(IOErrorEvent.IO_ERROR, onIOError);

_socket.connect('localhost', '1337);

在 Flash IDE 中构建它时,它会转到 onSocketConnect功能,但如果我尝试向 socked 写入任何内容 - 我会断开连接。如果我从网络浏览器运行它,我会进入 onSecurityError方法。

我必须说我在 Node 控制台中没有得到任何痕迹!

primus.on('connection', function connection(spark) {
  console.log('new connection'); // never gets logged!

据我所知,当策略文件出现错误时,会引发安全错误,因此我开始寻找解决方案。

我在网上读了很多东西,最常见的解决方案是简单使用 socket.io所谓的 FlashSocket.IO 。我尝试实现它,但它太旧了,有些代码丢失了,我终于从hurlant中得到了一些错误。库 - 我无法让它工作。

我还看到了一些名为 policy 的 Node 包,它运行单独的服务器来提供策略文件。

我尝试添加 transport数组 flashsocket其中 - 没有变化。我也不明白为什么所有样本都使用 transports - 我已经搜索过 index.jsprimus.js正在使用 transport (为什么有两个单独的文件,天哪?!)

我可以尝试仅使用 engine.io没有primus ,但我不知道这是否有任何帮助。我发现的所有帖子和示例都很旧 - 请帮助我提供任何最新的解决方案,或者至少解释一下需要做什么 - 对我来说似乎是一个全新的宇宙:)

提前致谢!

编辑: 感谢 The_asMan,我发现这与握手有关。我试过this简单的示例(尽管它已经很旧了)- 它对于 Flash 客户端完美地工作!当然,我无法将网络套接字连接到它,因为握手不正确 - 它有某种协议(protocol)。

所以我想我只需要了解如何获取 <policy-file-request/>在 Node 中-我将能够返回策略文件。但我不知道如何获取它 - 我没有收到任何类型的 data也不connect处理程序...

最佳答案

您遇到跨域策略问题。

我在这里全部回答了。

AS3 - Flash/AIR Socket Communication writeUTFBytes only works once

关于node.js - Web 套接字和 Flash 套接字客户端连接到一个 Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23063073/

相关文章:

node.js - 使用 NCONF 捕获命令行参数

apache-flex - 使用 ActionScript 中的唯一数据填充数据网格内的组合框(flex)

actionscript-3 - 键值对中的变量键

android - 在 Android 的 Flash 中浏览多张照片

java - 创建 web 应用程序的最佳方法,该应用程序通过外部客户端调用自己的其余服务来动态更新 UI

node.js - 在heroku上使用mongojs连接到mongoHQ

node.js - 如何按条件匹配子文档中的数组元素

javascript - 在 Nodejs 中将 HTML 字符串解析为 JS

websocket - AspNetCore 中的 WebSocket 实现是否可以替代 SignalR?

c - 带有 while 循环的非阻塞代码