连接状态事件中的硬代码
如果您只想在每次客户端连接到新频道时说“欢迎”,您可以将该消息硬编码到状态回调的 PNConnectedCategory 事件中,如下所示:
status: function(event) {
if (event.category == 'PNConnectedCategory') {
displayMessage('Welcome to channel, : ' + event.affectedChannels);
}
}
Presence Webhooks 服务器端处理
这本质上是相同的解决方案,但来自您的服务器。您可以利用Presence Webhooks,以便在订阅者在任何频道上加入频道(出席join 事件)时通知您的服务器。
您的服务器代码(此处为节点示例)如下所示:
app.post("/myapp/api/v1/wh/presence", (request, response) => {
var event = request.body;
console.info('entering presence webhook for uuid/user: ' + event.uuid);
if ((!event) || (!event.action) || (!event.uuid)) {
console.info("could not process event: " + JSON.stringify(event));
response.status(200).end();
return;
}
if (event.action === "join") {
console.info(event.uuid + " has join " + event.channel);
////////////////////////////////////////////////////////
// THIS IS WHERE YOU ADD YOUR WELCOME MESSAGE CODE
////////////////////////////////////////////////////////
pubnub.publish({
channel : event.channel,
message : {'welcome' : "Welcome to channel, " + event.channel}
},
function(status, response) {
// success/error check code goes here
});
}
if (event.action === "state-change" && event.state) {
console.info("state changed for " + event.uuid
+ " new state " + event.state);
}
if ((event.action === "leave") || (event.action === "timeout")) {
console.info(event.uuid + " has left or isn't reachable");
// use pubnub.wherenow() if needed.
}
response.status(200).end();
});
发布警告
如果您发布到用户刚刚加入的频道并且有其他用户订阅了该频道,那么每个人都会收到欢迎消息,因此您可能希望将消息发布到只有加入用户订阅的频道到。这应该是一些众所周知的“私人”频道(至少为您的服务器所熟知)。也许这个频道是用户的 UUID,所以你可以这样发布消息:
pubnub.publish({
channel : event.uuid, // use the UUID as the channel name
message : {'welcome' : "Welcome to channel, " + event.channel}
},
进一步的帮助
我希望这可以提供一些关于如何实现它的见解。如果您还有其他问题,请联系 PubNub Support 并提供有关您尝试做什么的完整详细信息,如果适用,请参考此 SO 帖子。