青瓷引擎官方插件服务器通讯提供与服务器的通讯功能,包含 http 与 websocket 两种通讯方式。该插件需要配合简易服务器使用。以下为详细介绍:
- 插件面板

其中 Url 用于填写服务器的地址
将该插件挂载到任一个 node 节点上,即可通过该节点进行服务器通讯。
- HTTP 通信方式
使用 post 方式发送 json 数据给服务器
post 的具体 url 地址为面板上的 Url + "/cmd"
contentType 为 application/json;charset=UTF-8
数据包如下所示:
POST http://localhost:8900/cmd HTTP/1.1
Host: localhost:8900
Proxy-Connection: keep-alive
Content-Length: 14
Cache-Control: no-cache
Origin: chrome-extension://gigaangkijllnhikjjhfmpjkddjphlie
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.8 Safari/537.36
Content-Type: application/json
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
{"cmd":"TEST"}
- websocket 通信方式
使用 socket.io 库实现 websocket
- HTTP API
sendMessage(node, cmd, jsonData, resCallback)
发送自定义 http 消息给服务器。

login(node, username, password, authInfo, resCallback)
发送 http 登录消息给服务器,内部通过 sendMessage(node, 'LOGIN' ....) 方法发送消息。

logout(node, username, password, authInfo, saveData, resCallback)
发送 http 登出消息给服务器,内部通过 sendMessage(node, 'LOGOUT' ....) 方法发送消息。

- SOCKET API
registerSocketCmd(node, cmd, func)
注册接收指定 socket 消息的处理函数

socketConnect(node, [opts])
连接 socket 服务器

sendSocketMessage(node, cmd, ...)
发送定义的 socket 消息给服务器。

返回值为 true 表示发送成功,否则发送失败
- SOCKET 事件
onConnect
新连接创建的事件。
原型为:function(node)
onDisconnect
连接断开的事件。
原型为:function(node)
onError
连接发生错误的事件。
原型为:function(node, err)
- http 范例
// send custom message
qc.ServerCommunicate.sendMessage(this.gameObject, "TEST", {"data":"test"}, callback);
// login
qc.ServerCommunicate.login(this.gameObject, "testuser", "testpassword", {}, callback);
// logout
qc.ServerCommunicate.logout(this.gameObject, "testuser", "testpassword", {}, {"data":"savedata"}, callback);
- websocket 范例
// register command handler
qc.ServerCommunicate.registerSocketCmd(this.gameObject, 'MSG_TEST_SOCKET', function(socketNode, para1, para2, para3){
console.log(socketNode, para1, para2, para3);
})
// connect socket server
qc.ServerCommunicate.socketConnect(this.gameObject);
// After socket connected, we can send command to server like this
qc.ServerCommunicate.sendSocketMessage(this.gameObject, 'TEST_SOCKET', 'para1', 2, { value : 'test'} );
文章来自绿盟(xDowns.com)转载请注明来路。
上一篇文章:如何使用青瓷引擎官方插件之微信接口 []