基础API
编写一个test服务
- 编写一个最简单的服务test.lua
--引入或者说是创建一个skynet服务
local skynet = require "skynet"
--调用skynet.start接口,并定义传入回调函数
skynet.start(function()
skynet.error("Server First Test")
end)
- 修改exmaple/config文件中的start的值为test,表示启动test.lua,修改之前请备份
- 通过skynet来运行test.lua
运行结果
注意:千万不要在skynet根目录以外的地方执行skynet,例如:
以上出现找不到logger.so的情况,其实不仅仅是这个模块找不到,所有的模块都找不到了,因为在config包含的路劲conf.path中,所有的模块路劲的引入全部依靠着相对路劲。一旦执行skynet程序的位置不一样了,相对路劲也会不一样。
- 添加自己的LUA脚本路径
- 例如:添加my_workspace目录,则只需在luaservice值的基础上再添加一个
root…“my_workspace/?.lua;” ,注意:各个路劲通过一个 ; 隔开。
把我们的刚才写的test.lua丢到my_workspace中
顺便将example下的config以及conf.path也拷贝一份到my_workspace
这次运行的时候就可以这样了:
另外一个种启动服务的方式
另一种方式启动想要的服务,可以在main.lua运行后,在console直接输入需要启动的服务名
- 先启动main.lua服务,注意还原examples/config默认配置,并且在example/config.path添加自己的服务
目录。
- 在启动的main服务中,直接输入test,回车
环境变量
1、预先加载的环境变量是在config中配置的,加载完成后,所有的service都能去获取这些变量。
2、也可以去设置环境变量,但是 不能修改已经存在的环境变量。
3、环境变量设置完成后,当前节点上的所有服务都能访问的到。
4、环境变量设置完成后,即使服务退出了,环境变量依然存在,所以不要滥用环境变量。
例如在config中添加:
示例代码:testenv.lua
其他服务也能获取环境变量,例如再启动一个test2.lua:
先运行test再运行test2
总结:环境变量只能新增加无法修改。
skynet.init的使用
skynet.init用来注册服务初始化之前,需要执行的函数。也就是在skynet.start之前运行。
示例代码:testinit.lua
运行结果: