【问题标题】:Socket data from Node.js is not received in the Flash clientFlash 客户端未收到来自 Node.js 的套接字数据
【发布时间】:2012-01-31 05:48:51
【问题描述】:

我在将数据从 socket.io 接收到 Flash (actionscript) 时遇到问题。

我试过了:

服务器(nodejs)socket.io:

var io = require('socket.io').listen(9000);
setInterval(function() {
io.sockets.emit('hello');
console.log("test");
}, 500 );

客户端(动作脚本)Socket();

import flash.net.Socket;
import flash.events.*;
var socket:Socket = new Socket();
Security.allowDomain("*");
socket.connect("localhost", 9000);
socket.addEventListener(Event.CONNECT, onConnect);
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
function onConnect( evt:Event ):void
{
trace( "Connected to flash");
}
function socketDataHandler(evt:ProgressEvent):void  
{  
trace("socketDataHandler: " + evt);
}  

输出

Flash 成功连接到服务器并跟踪“已连接到 Flash”,但无法接收数据。有什么想法吗?

【问题讨论】:

标签: flash actionscript-3 sockets node.js


【解决方案1】:

好吧,我认为这不会起作用,因为 socket.io 有它自己的协议,它使用多种传输方法,例如 websocket。但是我相信你的动作脚本只是有一个普通的闪存插座。最好的办法是您使用普通的 socket.io javascript 客户端并使用消息系统与您的操作脚本客户端进行通信。在这种情况下,我认为this 链接对您有用,其中描述了此消息。

更新:

这些库可能是您正在寻找的: https://github.com/ascorbic/socket-io-actionscript https://github.com/simb/FlashSocket.IO

【讨论】:

  • socket.io 可以通信 whit actionscript :)
  • 当我运行示例时,客户端成功连接到服务器,但无法接收数据。 :)
  • 它可以连接,因为它使用网络套接字,但是它不能与基于网络套接字等传输方法的socket.io协议通信。无论如何,我进行了搜索并更新了我的答案。
  • 我在 flash as3 中运行代码并收到此错误:1172:找不到定义 mx.utils。 mx.core。 MX.事件。 :(
【解决方案2】:

查看http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html#includeExamplesSummary 并查看名为readResponse 的方法。

您需要从流中读取字节。

或者只是使用那个例子,你就会知道客户端功能没有问题。

【讨论】:

  • 谢谢。问题仍然存在。 flash 无法从 socket.io 读取数据,我认为是服务器代码中的问题。任何人都可以更正服务器代码吗?
  • 我不认为服务器端有什么问题,因为看起来对我来说是正确的,也许你应该先用普通的JS客户端测试它以确保。
猜你喜欢
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多