使用 libeven 和 ruby 编写的一套支持分布式部署的 ruby 网游服务器框架.
目前功能较为简单,支持节点转发,虚拟节点,计时器等功能,
这套东西。只有最基础的网络+ruby 包处理。回包等功能.也支持 Http 协议.
我手上的游戏正在使用 . 在一台一般的 PC 机上,吞吐量约 5w/s
目前 ruby 版本用是的 2.1.1. 较稳定。没出现内存泄漏等问题。
也可以直接编译成 ruby 扩展库使用 进入 fsnet ruby extconf.rb make & make install 然后 require 'fsnet' 就 OK 了:)
也可以直接作为嵌入式语言使用
有兴趣的朋友可以看看:) https://github.com/frodosens/fsnet
class RunServer < GameServer
attr_reader :pvp_server;
def on_start_complete()
super();
@pvp_server = connect_node("pvp_server");
end
def handle_pack(sender, pack)
msg = pack.input.read_string()
os = FSOutputStream.new
os.write_string("Hello")
sender.send_pack(Pack.create( pack.serial, PACKAGE_TYPE, os);
end
end
server = RunServer.new
server.pvp_server.send_pack(pack, user_data, proc{ |result, user_data|
# 节点回应
}
一个简单的节点服务差不多是这样
补充:
然后具体包协议.. 用的是二进制流协议, 包头如下 byte byte_order int32 full_len 后面的就是 Pack 内容 这个可以在 pack.rb 里根据自己游戏具体定义。