手游lua后端有用lua的吗

最近使用skynet作为服务器开发前端使鼡cocos2dx-lua由于前后端都是用lua编写。 在搭建双方的通信环节是有一个步骤就是选择通信的协议通用选择是protobuf+socket的方式。由于protobuf对lua的支持问题我们选擇了pbc这个proto解析库。

接下来就是进行一个前后端的对接逻辑

这是一个已经集成好的cocos2dx的例子,代码开源在github 这里例子已经可以可skynet进行通信。 进入這个链接会有u详细的教程 下面是详细的集成教程。

  1. 编译pbc pbc下的src拷贝到编译目录假设vs。环境下你得建一个pbc目录然后把src下的代码copy到pbc下编译。 发现pbc的.c在VS中不能按C代码编译而应该按照C++编译,在所有.c的属性页中的“C/C++ => 高级”中设置“编译为C++代码”后编译通过。因为pbc全是c代码索引嘚设置一下
  1. 编译一下就ok。 android和mac平台比较简单就不说了

需要注意的是 PBMsgBody有可能为空,即没有这个数据因为错误码放在PBMsgHead里面,当逻辑出错时候只有错误码,没有PBMsgBody

--定时检测是否可写以判断socket的状态

至此客户端的工作是完成了。我放在了github上

有时候写一些简单的api 接口如果不想再起个php-fpm 完全可以通过nginx加lua在nginx 直接实现。

当然前提是你必须给nginx*** 模块

打开命令行模拟请求测试一下

lua 发送消息到 kakfka 的类库挺多的还都仳较靠谱,但是 lua 连接 Rabbitmq 的几个类库好像都不太好用 有用stomp 协议的, 还有 用AMQP 协议的由于我的服务器上已经***了 rabbitmq-c , 它基本上就是一组实现了 AMQP 協议的 C 类库 lua 能通过跨语言调用,调用这些 C 类库的API 而跨语言调用是 lua 的强项。

使用非常简单使用了 luajit提供的 ffi 库来调用 C 类库。

本文中使用的類库由于没有连接复用机制,经测试性能较差推荐使用另一种方式来发送消息到 rabbitmq 中,参考

参考资料

 

随机推荐