Nodejs pomelo 分布式聊天入门客户端demo(c# socket + chatofpomelo-websocket(官方))

Nodejs pomelo 分布式聊天入门客户端demo(c# socket + chatofpomelo-websocket(官方))

c/s 聊天例子

  • 目的:实现了一个简单的c/s分布式聊天例子,演示了c#客户端和pomelo服务器的交互,使用原生socket通信方式。本来是想用unity3d和pomelo通信,但是unity3d里面处理异步比较麻烦,为了使例子简洁,这里用纯.net环境演示了这个例子,这种处理方式也是用于unity3d。 功能和网页版聊天例子类似,改动了下整成c# winform版的,希望能给和我一样的初学者一点帮助。

  • 环境:win7 + vs2012 + nodejs(v0.10.25) + pomelo(~0.9.0)

  • 客户端:依赖pomelo官方的客户端.net库 pomelo-unityclient-socket,这里直接以源码的方式加进来,方便学习。另外还依赖simplejson(因为官方.net库依赖这个库)。

  • 服务端:就是pomelo官方例子 chatofpomelo-websocket

项目地址 https://github.com/koalaylj/pomelo-chat-demo/


4 回复

Node.js Pomelo 分布式聊天入门客户端Demo (C# Socket + ChatOfPomelo-WebSocket 官方)

c/s 聊天例子

目的

实现一个简单的C/S分布式聊天例子,演示了C#客户端和Pomelo服务器的交互,使用原生Socket通信方式。虽然初衷是为Unity3D和Pomelo通信设计,但为了简化处理过程,这里使用纯.NET环境来展示这个例子。这种方式同样适用于Unity3D。

环境
  • 操作系统: Windows 7
  • IDE: Visual Studio 2012
  • Node.js: v0.10.25
  • Pomelo: ~0.9.0
客户端
  • 依赖项:

    这里直接将pomelo-unityclient-socket以源码形式添加到项目中,方便学习。

服务端

示例代码

C# 客户端代码示例
using System;
using System.Net.Sockets;
using System.Text;
using Pomelo.Client;

namespace PomeloChatClient
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建TcpClient对象
            TcpClient client = new TcpClient("localhost", 3014);

            // 获取网络流
            NetworkStream stream = client.GetStream();

            // 创建Pomelo客户端实例
            var pomeloClient = new PomeloClient(stream, new SimpleJson.SimpleJson());

            // 连接服务器
            pomeloClient.Connect((isSuccess) =>
            {
                if (isSuccess)
                {
                    Console.WriteLine("连接成功!");
                    // 发送登录消息
                    pomeloClient.Request("connector.entryHandler.login", new { uid = "1", username = "user" }, (response) =>
                    {
                        Console.WriteLine($"登录结果: {response.Data}");
                    });
                }
                else
                {
                    Console.WriteLine("连接失败!");
                }
            });

            // 模拟发送消息
            while (true)
            {
                string message = Console.ReadLine();
                if (string.IsNullOrEmpty(message)) break;

                pomeloClient.Notify("chat.chatHandler.sendMessage", new { content = message });
            }

            // 关闭连接
            pomeloClient.Disconnect();
            client.Close();
        }
    }
}
解释
  1. TcpClient: 创建一个TCP客户端并连接到Pomelo服务器(默认端口3014)。
  2. NetworkStream: 获取网络流以便与服务器通信。
  3. PomeloClient: 使用Pomelo客户端库初始化客户端,并通过回调函数处理连接状态。
  4. Request: 发送登录请求到服务器,并接收响应。
  5. Notify: 模拟用户输入并发送聊天消息到服务器。
  6. Disconnect: 断开与服务器的连接。

项目地址

以上代码和步骤提供了一个基本的C#客户端与Pomelo服务器交互的示例,希望对初学者有所帮助。


建议转到 pomelo club 上面去哈 pomeloclub

嗯 good idea!

对于这个帖子所描述的问题,我们需要构建一个C#客户端,该客户端可以与基于Pomelo的Node.js服务器进行通信,实现分布式聊天功能。下面是一个简化的步骤和代码片段来指导如何实现这一点。

1. 环境准备

首先,确保安装了以下工具:

  • Windows 7 或更高版本
  • Visual Studio 2012 或更高版本
  • Node.js v0.10.25 或更高版本
  • Pomelo v0.9.0 或更高版本

2. 客户端准备

我们需要一个C#客户端,这里我们选择使用Windows Forms应用程序。客户端需要连接到Pomelo服务器,并发送和接收消息。

添加依赖

从GitHub下载并添加pomelo-unityclient-socket库到你的项目中。此外,还需添加SimpleJson库作为依赖。

客户端代码示例

using System;
using System.Net.Sockets;
using Pomelo.Client;

namespace ChatClient
{
    public partial class MainForm : Form
    {
        private TcpClient _client;
        private PomeloClient _pomeloClient;

        public MainForm()
        {
            InitializeComponent();
            InitializeClient();
        }

        private void InitializeClient()
        {
            // 连接到服务器
            _client = new TcpClient("localhost", 3014);
            _pomeloClient = new PomeloClient(_client);
            _pomeloClient.On("onConnect", OnConnect);
            _pomeloClient.On("onMessage", OnMessage);

            // 登录
            _pomeloClient.Connect();
        }

        private void OnConnect()
        {
            Console.WriteLine("Connected to server.");
        }

        private void OnMessage(dynamic message)
        {
            string content = message.content;
            Console.WriteLine($"Received: {content}");
        }

        private void SendButton_Click(object sender, EventArgs e)
        {
            var msg = new { route = "chat.send", content = "Hello from C#" };
            _pomeloClient.Send(msg);
        }
    }
}

3. 服务端准备

确保按照Pomelo官方文档设置好服务端,使用chatofpomelo-websocket示例作为基础。

示例服务器端代码

服务端代码可以从GitHub上的chatofpomelo-websocket示例获取,配置路由和事件处理器以支持聊天功能。

总结

以上是基本的C#客户端和Pomelo服务端之间的简单通信实现。通过这种方式,你可以扩展功能,例如添加更多的消息类型、用户身份验证等。上述代码展示了如何初始化TCP连接,注册事件处理器以及发送和接收消息的基本流程。

回到顶部