WebRPCs
WebRPC是一種靈活的方式,可以將外部服務與Photon server結合起來。
例如,通過WebRPC,Photon客戶端可以要求伺服器從外部網絡服務中獲取數據。
網絡服務基礎知識
WebRPC的架構很簡單。
Photon伺服器在客戶端和網絡伺服器之間扮演一個_代理_或_中繼_的角色。
WebRPC也可以看作是Webhooks的延伸,甚至可以看作是自定義的客戶端驅動的Webhooks。
請注意以下開發提示:
- 您可以使用任何語言、框架或網絡伺服器來實現WebRPCs的服務。
- 在任何情況下,盡量減少您發送的數據,以保持事情的精簡和對玩家的便宜。
配置
在Photon伺服器上,WebRPC的配置可以在:
- "deploy\Loadbalancing\Master\bin\Photon.LoadBalancing.dll.config "用於主伺服器
- "deploy\Loadbalancing\GameServer\bin\Photon.LoadBalancing.dll.config "用於遊戲伺服器
它需要一個 BaseURL 值,並且可以被禁用。
下面是一個配置的例子:
XML
<WebRpcSettings Enabled="true">
<BaseUrl Value="https://example.com/WebRPC" />
</WebRpcSettings>
請求
在客戶端,Photon WebRPC是一個Photon操作,在連接到主伺服器或遊戲伺服器時允許使用。
它需要一個URI路徑字符串(又稱WebRPC方法名稱)和一個包含要發送給網絡服務的數據的第二個參數(又稱WebRPC參數)。
這兩個參數可以傳遞給LoadBalancingClient.OpWebRpc方法。
UriPath是WebRPC的相對路徑,應該與遠程過程的名稱相匹配。
也可以在URL本身中發送參數。
在這種情況下,_query string_應該包含在存儲過程的名稱中,並附加到相對路徑上。
當Photon伺服器收到請求時,存儲過程的名稱將與BaseURL連接,形成WebRPC的URL的絕對路徑,然後將其轉發給同一URL的網絡服務。
由於使用的HTTP請求方法是POST,如果客戶端發送了任何參數,Photon將把它們作為JSON POST數據與默認屬性一起傳遞過去。
AppVersion:
您的應用程序的版本,由遊戲客戶端設置。
UserId:
進行WebRPC的Actor的ID。
找到的任何其他屬性都是客戶端發送的參數的一部分。
如果客戶端使用的WebRpcParameters類型是Dictionary<string, object>,那麼所有的鍵/值對將被發送到數據的根對象中。
否則,如果它是任何其他有效的JSON類型,它將作為一個新的屬性RpcParams的值被包含。
Example 1
您的BaseURL是https://my.service.org,客戶端調用WebRPC("method?id=1", parameters)。
參數是一個Dictionary<string, object>,它有一個{{"key1": 1}, {"key2": "yx"}, {"key3": true}} 作為內容。
在這種情況下,Photon將調用https://my.service.org/method?id=1,並額外發送JSON:
JSON
{
"AppId": "00000000-0000-0000-0000-000000000000",
"AppVersion": "client-x.y.z",
"Region": "EU",
"UserId": "userXYZ",
"key1": 1,
"key2": "yx",
"key3": true
}
Example 2
您的BaseURL是https://my.service.org,客戶端調用WebRPC("method?id=1", parameters)。
參數是一個對象的數組。object[] { 0, "xy", false }。
在這種情況下,Photon將調用https://my.service.org/method?id=1,並另外發送 JSON:
JSON
{
"AppId": "00000000-0000-0000-0000-000000000000",
"AppVersion": "client-x.y.z",
"Region": "EU",
"UserId": "userXYZ",
"RpcParams": [0, "xy", false]
}
Example 3
您的BaseURL是https://my.service.org,客戶端調用WebRPC("method?id=1", parameters)。
參數是一個原始的簡單類型。比方說一個字符串 "test"。
在這種情況下,Photon將調用https://my.service.org/method?id=1,並另外發送JSON:
JSON
{
"AppId": "00000000-0000-0000-0000-000000000000",
"AppVersion": "client-x.y.z",
"Region": "EU",
"UserId": "userXYZ",
"RpcParams": "test"
}
發送安全數據
AuthCookie可以在針對自定義認証提供者的成功認証後被檢索到。
欲了解更多信息,請訪問自定義認証文檔頁面。
響應
WebRPCs的網絡服務必須用一個JSON對象來響應,以便Photon將結果發回給客戶端。
預期的響應必須包括 ResultCode、Data 和可選的 Message。
ResultCode應該是0表示OK,任何其他代碼表示錯誤。
您可以編造它們來幫助客戶端處理錯誤,添加一個可讀的字符串信息總是一個最佳做法。
Data可以是空的,但如果您發送任何東西,它必須是一個有效的JSON對象。
Example 1<!--
JSON
{
"ResultCode": "0"
}
Example 2<!--
JSON
{
"ResultCode": "1",
"Message": "Self-explanatory error message"
}
Example 3<!--
JSON
{
"ResultCode": "1",
"Data": {
"Key1": "V",
"Key2": 1,
"Key3": true
}
}
Back to top