伺服器通訊
提供與伺服器的通訊功能,包含 http 與 websocket 兩種通訊方式。該插件需要配合簡易伺服器使用。
插件面闆
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iM3IGZiNzM1YjM0cTZ4EGNlV2MzAzMjdTYwAjYkFGMi9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
其中 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://socket.io/
HTTP API
sendMessage(node, cmd, jsonData, resCallback)
發送自定義 http 消息給伺服器。
參數名
類型
說明
node
qc.Node
挂載該插件的節點
cmd
string
消息名
jsonData
json
消息參數資料
resCallback
function
消息傳回的回調函數,回調函數原型為:resCallback(json),參數為 json 格式的傳回資料
login(node, username, password, authInfo, resCallback)
發送 http 登入消息給伺服器,内部通過 sendMessage(node, 'LOGIN' ....) 方法發送消息。
參數名
類型
說明
node
qc.Node
挂載該插件的節點
username
string
使用者名
password
string
明文密碼,傳輸時會進行加密傳輸
authInfo
json
登入的相關參數資訊,json格式
resCallback
function
消息傳回的回調函數,回調函數原型為:resCallback(json),參數為 json 格式的傳回資料
logout(node, username, password, authInfo, saveData, resCallback)
發送 http 登出消息給伺服器,内部通過 sendMessage(node, 'LOGOUT' ....) 方法發送消息。
參數名
類型
說明
node
qc.Node
挂載該插件的節點
username
string
使用者名
password
string
明文密碼,傳輸時會進行加密傳輸
authInfo
json
登入的相關參數資訊,json格式
saveData
json
需要儲存的使用者資料,json格式
resCallback
function
消息傳回的回調函數,回調函數原型為:resCallback(json),參數為 json 格式的傳回資料
SOCKET API
registerSocketCmd(node, cmd, func)
注冊接收指定 socket 消息的處理函數
參數名
類型
說明
node
qc.Node
挂載該插件的節點
cmd
string
消息名
func
function
消息處理函數,原型為:function(node, ...)
socketConnect(node, [opts])
連接配接 socket 伺服器
參數名
類型
說明
node
qc.Node
挂載該插件的節點
opts
mapping
可選的 socket.io 的選項,不傳則使用預設選項
sendSocketMessage(node, cmd, ...)
發送定義的 socket 消息給伺服器。
參數名
類型
說明
node
qc.Node
挂載該插件的節點
cmd
string
消息名
...
array
可選的參數清單
傳回值為 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'} );
Demo
運作該 Demo 需要啟動簡易伺服器。