增强了 skynet 的 socket 库
今天想在 skynet 下访问外部的 http 接口, 所以试了一下前几天新写的非阻塞 socket 库。
由于测试的时候用的 URL 被墙了,所以发现了问题:connect 目前是阻塞模式的。连接一个有问题的服务器可能被阻塞很久。所以花了点时间把 connect 接口改成非阻塞的了。
我以前没处理过这种情况,所以也就按书上的写法写写,异步 connect 做起来挺麻烦的。如果有用 skynet 的同学这方面经验丰富,烦请用之前帮忙 review 一下新打的 patch 。
另外,为了处理 http 的需求,给 socket 库增加了新接口 readall ,可以读 socket 上的所有数据(直到对方 close 再返回)。
socket.read 和 socket.readline 也改进了,如果对方关闭了连接,那么最后一次调用除了返回 nil 外,也把最后发送过来的数据返回。这样,readline 就可以处理最后一行没有分割符的情况了。
另外一个小改进是针对上次 两步初始化 lua 服务 的。
我在 lua 服务启动模块中增加了出错通知,这样 launcher 服务就可以拿到启动的出错信息了。
当然,我觉得 Hive 里处理服务启动的方式更漂亮一些。就是独立出一个服务启动协议,把启动参数用消息传进去,目前这样用长字符串传递启动消息的方式非常容易出错。
可惜我们已经在目前的 skynet 上积累了太多代码,想改比较困难了。
Comments
Posted by: wstc | (4) July 25, 2013 02:53 PM
Posted by: zelor | (3) July 24, 2013 05:20 PM
Posted by: Cloud | (2) July 23, 2013 10:47 AM
Posted by: qiaojie | (1) July 22, 2013 11:51 PM