go网络库cellet实现socket聊天功能

Posted angelyan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go网络库cellet实现socket聊天功能相关的知识,希望对你有一定的参考价值。

一 、介绍

cellnet是一个组件化、高扩展性、高性能的开源服务器网络库

git地址:https://github.com/davyxu/cellnet

主要使用领域:

  • 游戏服务器

    方便定制私有协议,快速构建逻辑服务器、网关服务器、服务器间互联互通、对接第三方SDK、转换编码协议等

  • ARM设备

    设备间网络通讯

  • 证券软件

    内部RPC

支持多种传输协议:

  • TCP

    TCP连接器的重连,侦听器的优雅重启。

  • UDP

    纯UDP裸包收发

  • HTTP(测试中)

    侦听器的优雅重启, 支持json及form的收发及封装。编写游戏服务器时,不再需要使用第三方HTTP服务器对接SDK。

    注: 如需要对接大规模网页, 请使用第三方专业网络库,如(https://github.com/gin-gonic/gin), cellnet的http支持主要目的在用统一的地址及peer管理

  • WebSocket

    采用(github.com/gorilla/websocket)实现

支持混合消息编码:

  • cellnet内建支持以下数据编码:

    可以通过codec包自行添加新的编码格式

  • 支持混合编码收发

    无需改动代码,只需调整消息注册方式,即可达成运行期同时收发不同编码的封包

    • 与其他语言编写的服务器使用protobuf

    • 与web服务器使用json通信

    • 与Unity3D(C#)使用ProtoPlus(github.com/davyxu/protoplus)协议通信

    优点:

    • 享受不同通信协议格式的优点,避免缺点。如Protobuf适合服务器间的传输,封包小,适应面广。

    • 私有的二进制协议方便加密和客户端处理,低GC和实现复杂度。

支持多线程和单线程设计架构:

  • 单线程异步逻辑,适用于MMORPG复杂交互,免加锁处理共享数据。

  • 多线程同步逻辑,适用于机器人逻辑,每个机器人使用独立的goroutine收发处理,机器人间互不干扰。

  • 多线程并发逻辑,适用于网关,消息转发,HTTP服务器,每条消息处理都会在完全并发下。

支持远程过程调用(RPC):

  • 支持同步RPC,适用于后台服务器向其他服务器请求数据后再顺处理事务。

  • 支持异步RPC,适用于单线程服务器逻辑。

cellnet的主要流程和架构:

  • socket连接管理:cellnet网络库使用连接器和接受器(connector,acceptor)管理socket连接

  • 会话(session):客户端和服务器连接使用会话(session)处理收发包流程,收发包的流程将事件通过事件的回调(cellnet.Eventfunc)派发

  • 包处理(packet):cellent中的packet包处理会话收发流程派发的事件,实现变长封包的解析,处理和收发

  • 编码器:用户的封包使用编码器(codec)负责原始封包的字节数组和用户消息间的转换

  • 消息队列:可以将收到的消息按顺序排队并提供给用户进行处理

  • 消息元信息(messageMeta):为所有的系统提供静态的消息扩展信息,如消息的ID,编码器,创建方法等

 技术图片

 

二、客户端功能

准备中。。。

三、服务端功能

准备中。。。

以上是关于go网络库cellet实现socket聊天功能的主要内容,如果未能解决你的问题,请参考以下文章

socket库:Python实现TCP/IP客户和服务器通信

socket发送UDP广播实现聊天室功能

socket发送UDP广播实现聊天室功能

微信小程序---Socket聊天功能实现

Java实现一个hello/hi的简单的网络聊天程序

聊天功能插件Socket.io