Flash客户端未收到Node.js的套接字数据

时间:2011-12-31 23:35:22

标签: flash actionscript-3 sockets node.js

我遇到从socket.io接收数据到Flash(动作脚本)的问题。

我试过了:

服务器(nodejs)socket.io:

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

客户端(actionscript)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将成功连接到服务器并跟踪“已连接到闪存”但它无法接收数据。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

您需要从流中读取字节。

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

答案 1 :(得分:0)

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

更新

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