服务器 API » Presence¶
在多处理器和/或机器上扩展服务器时, 需要为 Server 提供 Presence 选项. Presence 的作用是允许不同进程之间的通信和数据共享, 特别是在匹配期间.
presence 实例也可以用于所有 Room 处理程序.可以使用它的 API 保留数据和通过 PUB/SUB 进行房间之间的通信.
LocalPresence¶
这是默认选项.在单进程中运行 Colyseus 时, 应使用此选项.
RedisPresence (clientOpts?)¶
在多进程和/或多机器上运行 Colyseus 时, 应使用此选项.
参数:
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 位有符号整数.