天天看點

伺服器通訊資訊,伺服器通訊

伺服器通訊

提供與伺服器的通訊功能,包含 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://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 需要啟動簡易伺服器。