分享一个用 Flash Socket 连 Pomelo TCP 服务器的 Nodejs 组件(已更新)

分享一个用 Flash Socket 连 Pomelo TCP 服务器的 Nodejs 组件(已更新)

https://github.com/D-Deo/pomelo-flash-tcp

目前版本 0.0.5a,更新内容可参考 2 楼

这是一个为了可以用 flash 的 as3 来和服务端的 pomelo 通讯的 tcp 组件,在自己的项目中已经可以和后台进行调试。

@目前 v0.0.4a 已全面支持 pomelo 的 routeDict 和 服务端的 protobuf

相关的服务器可设置如下参数:

app.set(‘connectorConfig’, { connector : pomelo.connectors.hybridconnector, useDict : true, useProtobuf : true, });


3 回复

分享一个用 Flash Socket 连接 Pomelo TCP 服务器的 Node.js 组件

引言

在这个帖子中,我将介绍如何使用 Flash Socket 连接到基于 Node.js 的 Pomelo TCP 服务器。这个组件可以帮助你在 AS3 中实现与服务器的高效通信。

项目链接

该项目托管在 GitHub 上,你可以通过以下链接访问:

当前版本

当前版本为 0.0.5a。更新内容可以在评论区查看。

项目概述

该组件允许你使用 Flash 中的 ActionScript 3 (AS3) 来与 Pomelo 服务器进行通信。它已经在我的项目中成功应用,并且能够与后台进行调试。

支持功能

目前版本 v0.0.4a 全面支持 Pomelo 的路由字典(routeDict)和服务器端的 Protobuf 库。

服务器配置

要在服务器端启用这些功能,请确保你的服务器配置如下:

app.set('connectorConfig', {
    connector: pomelo.connectors.hybridconnector,
    useDict: true,         // 启用字典
    useProtobuf: true      // 启用 Protobuf
});

示例代码

以下是一个简单的示例代码,展示了如何在客户端使用 Flash Socket 连接到 Pomelo 服务器并发送消息。

客户端代码(ActionScript 3)
import flash.net.Socket;
import flash.events.Event;

var socket:Socket = new Socket();
socket.addEventListener(Event.CONNECT, onConnect);
socket.addEventListener(Event.CLOSE, onClose);
socket.addEventListener(IOErrorEvent.IO_ERROR, onError);

// 连接到服务器
socket.connect("localhost", 3014);

function onConnect(event:Event):void {
    trace("Connected to server!");
    
    // 发送消息到服务器
    var message:Object = { route: "chat.send", body: { content: "Hello from Flash!" } };
    var jsonString:String = JSON.stringify(message);
    socket.writeUTFBytes(jsonString + "\n");
}

function onClose(event:Event):void {
    trace("Connection closed.");
}

function onError(event:IOErrorEvent):void {
    trace("Error: " + event.text);
}
服务器端代码(Node.js)
const pomelo = require('pomelo');
const app = pomelo.init({
    // 配置参数
    connectorConfig: {
        connector: pomelo.connectors.hybridconnector,
        useDict: true,
        useProtobuf: true
    }
});

app.configure('development', function() {
    app.set('port', 3014);
});

app.start();

总结

通过上述代码和配置,你可以轻松地使用 Flash Socket 连接到 Pomelo TCP 服务器。希望这个组件能帮助你在项目中实现高效通信。如果有任何问题或建议,请随时在 GitHub 仓库中提交 issue。


@目前 v0.0.5a 也已支持 Pomelo v0.4.x 中的新特性:自定义 Message 的编解码

客户端使用方法:

创建一个实现了 IMessage 接口的类 (MyMessage),并实现其接口方法:encode 和 decode,更多编解码内容可参考 Pomelo wiki

在创建 Pomelo 的实例之后,可将自定义的 Message 实例赋值给 Pomelo 的 message 属性

相关客户端代码可参考如下形势:

var myMessage:IMessage = new MyMessage(); var pomelo:Pomelo = new Pomelo(); pomelo.message = myMessage;

相关的服务器可在 app.js 中添加如下方法:

var encode = function(reqId, route, msg) { // do some customized encode with reqId, route and msg return result; // return encode result };

var decode = function(msg) { // do some customized decode with msg return result; // return decode result };

根据您提供的标题和内容,我为您整理了关于如何使用Flash Socket连接Pomelo TCP服务器的Node.js组件的说明。以下是详细的解答,包含一些代码片段。

1. 引言

这个组件允许您使用Adobe Flash(通过AS3语言)与基于Pomelo框架的TCP服务器进行通信。它特别适用于那些仍然需要支持Flash客户端的应用场景。

2. 使用说明

安装

首先,确保安装了必要的依赖:

npm install pomelo-flash-tcp

初始化Flash Socket

在Flash AS3项目中,您可以使用以下代码初始化Flash Socket连接到Pomelo服务器:

import flash.net.Socket;

var socket:Socket = new Socket();
socket.addEventListener(Event.CONNECT, onConnect);
socket.connect("your-server-address", your-port);

function onConnect(event:Event):void {
    trace("Connected to server");
}

发送消息

在Flash AS3中发送消息到服务器:

var message:Object = {route: "chat.send", body: {message: "Hello World"}};
var data:ByteArray = encode(message); // 假设encode是将对象编码为二进制数据的方法
socket.writeBytes(data);
socket.flush();

接收消息

处理来自服务器的消息:

socket.addEventListener(DataEvent.DATA, onData);

function onData(event:DataEvent):void {
    var data:ByteArray = event.data;
    var message:Object = decode(data); // 假设decode是将二进制数据解码为对象的方法
    trace("Received: ", message);
}

3. 配置Pomelo服务器

确保您的Pomelo服务器配置支持字典(useDict)和protobuf(useProtobuf),如标题内容所示:

app.set('connectorConfig', {
    connector: pomelo.connectors.hybridconnector,
    useDict: true,
    useProtobuf: true,
});

4. 总结

该组件提供了一个实用的方法来实现Flash客户端与Pomelo服务器之间的通信,尤其适合需要支持旧版Flash应用的场景。您可以从提供的GitHub链接中获取更多细节和最新版本。

参考链接


如果您有任何具体问题或需要进一步的帮助,请随时告知!

回到顶部