伺服器 API » 狀態¶
在多處理器和/或機器上擴展伺服器時, 需要為 Server
提供 Presence
選項. Presence
的作用是允許不同進程之間的通信和數據共享, 特別是在匹配期間.
presence
實例也可以用於所有 Room
處理程序. 可以使用它的 API 保留數據和通過 PUB/SUB 進行房間之間的通信.
LocalPresence
¶
這是預設選項. 在單進程中執行 Colyseus 時, 應使用此選項.
RedisPresence (clientOpts?)
¶
在多進程和/或多機器上執行 Colyseus 時, 應使用此選項.
Parameters:
clientOpts
: redis 客戶端選項 (主機/憑證). 查看完整選項列表.
import { Server, RedisPresence } from "colyseus";
// This happens on the slave processes.
const gameServer = new Server({
// ...
presence: new RedisPresence()
});
gameServer.listen(2567);
const colyseus = require('colyseus');
// This happens on the slave processes.
const gameServer = new colyseus.Server({
// ...
presence: new colyseus.RedisPresence()
});
gameServer.listen(2567);
API¶
Presence
API 高度基於 Redis 的 API, 後者是一個鍵-值數據庫.
每個 Room
實例都有一個 presence
屬性, 實現以下方法:
subscribe(topic: string, callback:Function)
¶
訂閱給定的 topic
. 每當有關於 topic
的消息 發布 時, 就會觸發 callback
.
unsubscribe(topic: string)
¶
取消訂閱給定的 topic
.
publish(topic: string, data: any)
¶
發布給定 topic
的消息.
exists(key: string):Promise<boolean>
¶
如果鍵值存在, 則返回.
setex(key: string, value: string, seconds: number)
¶
設置鍵值, 以保存字符串值, 設置鍵值, 從而在指定秒數後超時.
get(key: string)
¶
獲取鍵值.
del(key: string): void
¶
移除特定的鍵.
sadd(key: string, value: any)
¶
將特定的成員添加至存儲在鍵值中的集合. 忽略已屬於此集合的成員的特定成員. 如果鍵值不存在, 則創建一個新的集合, 然後添加特定成員.
smembers(key: string)
¶
返回存儲在鍵值中的集合的所有成員.
sismember(member: string)
¶
如果成員 member
是存儲在鍵值中的集合的成員, 則返回.
Return value
1
如果元素是集合的成員.0
如果元素不是集合的成員, 或鍵值不存在.
srem(key: string, value: any)
¶
移除存儲在鍵值中的集合中的特定成員. 忽略不屬於此集合的成員的特定成員. 如果鍵值不存在, 則視它為空集合, 此指令返回 0.
scard(key: string)
¶
返回存儲在鍵值中的集合的勢(元素的數量).
sinter(...keys: string[])
¶
返回由所有給定集合的交集產生的集合成員.
hset(key: string, field: string, value: string)
¶
將存儲在鍵中的散列中的字段設置為值. 如果鍵值不存在, 則創建一個包含哈希值的新鍵值. 如果字段已存在於哈希值中, 則將其覆蓋.
hincrby(key: string, field: string, value: number)
¶
按增量遞增存儲在鍵值中的哈希字段中的數量. 如果鍵值不存在, 則創建一個包含哈希值的新鍵值. 如果字段不存在, 則在執行操作之前將值設置為 0.
hget(key: string, field: string):Promise<string>
¶
返回與存儲在鍵值的哈希值中的字段相關聯的值.
hgetall(key: string):Promise<{\[field: string]: string}>
¶
返回存儲在鍵值的哈希值中的所有字段和值.
hdel(key: string, field: string)
¶
移除存儲在鍵值中的集合中的特定成員. 將忽略在此哈希值中不存在的特定字段. 如果鍵值不存在, 則將其視為空哈希值, 此指令返回 0.
hlen(key: string):Promise<number>
¶
返回存儲在鍵值中的哈希值所包含的字段數量
incr(key: string)
¶
將存儲在鍵值中的數量增加 1. 如果鍵值不存在, 則在執行操作前將其設置為 0. 如果鍵值包含錯誤類型的值或包含不能表示為整數的字符串, 則返回錯誤. 此操作僅限於 64 位有符號整數.
decr(key: string)
¶
將存儲在鍵值中的數量減 1. 如果鍵值不存在, 則在執行操作前將其設置為 0. 如果鍵值包含錯誤類型的值或包含不能表示為整數的字符串, 則返回錯誤. 此操作僅限於 64 位有符號整數.