最近在关注云风大神基于CLua写的Skynet网络框架!采用单进程多线程的Actor并发模型,每个Actor都可以理解成一个服务(协程),服务之间的通信也是采用消息传递的机制与golang、erlang很像。 但是由于大神们的境界太高并且手册、文档较少,所以对初学者来说确实有点难入门。基本只能在目录下的examples与test目录下看实
本次共找到 13 条 skynet 相关的文章
Skynet 初探(1) 之 echo 复读机
Skynet 服务创建流程
Skynet服务创建流程根据设计综述(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.codingnow.com%2F2012%2F09%2Fthe_design_of_skynet.html)Skynet是为了让服务器充分利用多核优势,将
Skynet Cluster 简介
SkynetCluster简介Cluster模块负责Skynet节点之间的通信。Cluster概述||node1||node2|<|
Skynet 简单的服务编写 (2)
前面我们简单的用Skynet写了个lua服务,实现了简单的发送消息并调用输出“HelloWorld!” 而由于Skynet是网络框架,所以我们这次用Skynet写一个简单的服务来监听80端口。 具体流程如下: 1、在main文件入口内监ip为:192.168.2.5,端口为:80
Lua 中避免低效解析 TCP 网络数据包体的一种方式(续)
上一篇(https://my.oschina.net/iirecord/blog/4497926)避免通过拼接字符串作为接收数据的缓冲区,解决办法是通过一个Lua模块来获取接收后的完整数据,若没有完整数据则读取socket,若还没有完整数据则sleep一小会儿,然后再尝试。了解过Lua或用过skynet可知,使用coroutine
Skynet 设计综述
1.多线程模式,可以使得状态共享、数据交换更加高效。而多线程模型的诸多弊端,比如复杂的线程锁、线程调度问题等,都可以通过减小底层的规模,精简设计,最终把危害限制在很小的范围内。2.做为核心功能,Skynet仅解决一个问题:把一个符合规范的C模块,从动态库(so文件)中启动起来,绑定一个永不重复(即使模块退出)的数字id做为其handl
Skynet 通过组播(Multicast)实现一个简单的世界频道
什么是世界频道? "世界频道"这个概念就是在一个游戏内经常见到。简单来说,世界频道就是在游戏内的一个大区中所有玩家可以接收、发布的消息的一个玩家间的统称。 玩家在游戏中进行体验的同时,通常需要发布一些特殊的消息,包含:"买卖装备、组队等";通常游戏中的各种频道的实现都依赖于消息队列的广播方式。Skynet的组播解决
Skynet 进程启动
Skynet进程启动初始化配置skynet进程启动时需要指定配置文件,启动后读取配置文件中的内容并存储在内存中。配置文件格式是kv且k必须是字符串而v必须是字符串或者luaboolean类型。通过L读取配置,随后把配置存储在skynet_env.c模块中
Skynet 初探(2) 之 snax 版的 echo 复读机
main.lualocalskynetrequire"skynet"localsnaxrequire"snax"localfunctionmain(...)print("SkynetServerStarting....")localgate
Skynet 小试Debug_console...
昨天凌晨4点还在写Skynet服务试玩(http://my.oschina.net/CandyMi/blog/846113),结果发现自己写的服务出现内存泄漏了。 今天早上起床吃早餐的时候一直在想: "如果每个Lua服务处理完客户端关闭的网络连接后,服务是否会自动退出呢?" 答案:不会! 现在,我们来看昨
Skynet 简单的服务编写 (1)
Skynet通过内部注册的协议进行消息传输。看以下简单例子: 1、首先我们新建一个服务network; 2、然后对其进行发送一条lua消息,让其调用start函数进行输出;main.lualocalskynetrequire"skynet"localfunctionmain()
Lua5.3 笔记
Lua5.3笔记最近用skynet,sproto通讯,完全看不懂通讯二进制是怎么写的,发现都是string这个,string那个,完全理解不来。于是查了一下string.pack的api,和之前别的语言里面用的writeByte,writeShort,writeUnsignedInt这样的写法完全是不一样的。然后在此记录
Skynet 代码(1)
服务端:mainlocalskynetrequire"skynet"localfunctionaction()skynet.uniqueservice("debug_console",8000)skynet.uniqueservice"watchdog"skynet.e