Actionscript xmlsocket 不读取由 nodejs 网络模块服务器写入的数据。但服务器正确读取数据。任何解决方案?

Posted

技术标签:

【中文标题】Actionscript xmlsocket 不读取由 nodejs 网络模块服务器写入的数据。但服务器正确读取数据。任何解决方案?【英文标题】:Actionscript xmlsocket doesn't read data which is write by the nodejs net module server. but server read the data correctly. any solution? 【发布时间】:2018-05-27 13:52:34 【问题描述】:

Node js 网络模块服务器代码:

var net = require('net');
var server = net.createServer(function (connection) 
    console.log('client connected');

connection.on('data', function (data) 
    console.log('data from flash = ' + data);

    var jsonData = ;
    jsonData.message = "joined";

    var d = JSON.stringify(jsonData);

    connection.write(d);

);

connection.on('end', function () 
    console.log('client disconnected');
);

// connection.pipe(connection);
);
server.listen(3055, function () 
    console.log('server is listening');
);

动作脚本代码

this.login_socket.connect(this.server_ip,3055);
         this.login_socket.addEventListener(Event.CONNECT,this.login_socket_onConnection);
         this.login_socket.addEventListener(DataEvent.DATA,this.login_onData);
         this.login_socket.addEventListener(IOErrorEvent.IO_ERROR,this.login_socket_onIOErrorEvent);
         this.login_socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.login_socket_SecurityErrorEvent);
         this.login_socket.addEventListener(Event.CLOSE,this.login_socket_closeErrorEvent);

谁能告诉我如何将xml套接字与node js net模块一起使用?我已经尝试了一切,但这根本不起作用。我想为 Flash 游戏创建一个到服务器的套接字连接。我使用 laravel 作为后端。如果有人知道如何用 php 创建它,请告诉我。谢谢。

【问题讨论】:

客户端有错误吗?我认为应该有一个 SecurityErrorEvent 因为如果没有正确的跨域策略,AS3 套接字将无法工作,而我在您的 node.js 代码中看不到一个。 当我按原样发回客户端数据时,客户端接受数据。但其他任何不接受。你能告诉我如何跨域策略吗? 我不确定我是否理解。您说如果您从客户端向服务器发送“AAA”然后将其回显,就可以了。但是,如果您改为发送“BBB”,那就不行了? 是的。但“BBB”不是客户端到服务器。仅从服务器到客户端。 如果发送工作完全那么它工作。看起来你错过了一些东西。就像数据包末尾的 0 字节字符串终止符一样。您需要按字节检查向服务器发送和从服务器发送的内容。 【参考方案1】:
var net = require('net');

var server = net.createServer(function (connection) 

    console.log('client connected');

    connection.setEncoding("utf8");

    // on receive data from client
    connection.on('data', function (data) 

        console.log('data from flash = ' + data);

        var d = JSON.stringify(
            message: "joined"
        ) + "\0";

        connection.write(d);
    );

    // on connection end
    connection.on('end', function () 
        console.log('client disconnected');
    );

    // on error
    connection.on("error", function (exception) 
        console.log('an error occurred: ' + exception);
    );
);

server.listen(3055, function () 
    console.log('server is listening');
);

我将 nodejs 服务器代码更改为上面的代码,现在可以正常工作了。

【讨论】:

以上是关于Actionscript xmlsocket 不读取由 nodejs 网络模块服务器写入的数据。但服务器正确读取数据。任何解决方案?的主要内容,如果未能解决你的问题,请参考以下文章

Actionscript xmlsocket 不读取由 nodejs 网络模块服务器写入的数据。但服务器正确读取数据。任何解决方案?

Android 中的 ActionScript 套接字

ActionScript 3.0 套接字无法重新连接

如何在 Flash、XMLSocket 中拆分数据包

XMLSocket 可以接收数据但不能发送

XMLSocket 在 Firefox 中工作,但不在 IE 中