允许游客ws连接到公共频道
This commit is contained in:
parent
3fbc863e15
commit
4561c498a2
20
index.js
20
index.js
@ -87,16 +87,22 @@ function websocketer(ws, req) {
|
|||||||
// 游客使用公共账户 uid = 0
|
// 游客使用公共账户 uid = 0
|
||||||
let uid = req.session?.account?.uid || 0
|
let uid = req.session?.account?.uid || 0
|
||||||
|
|
||||||
|
// 当游客连接时, 为其使用访客公共订阅列表
|
||||||
|
if (req.session.account) {
|
||||||
|
// 当用户连接时, 读取其订阅列表
|
||||||
|
db('user').findOne({ uid }, function (err, doc) {
|
||||||
|
if (doc && Array.isArray(doc.fm)) {
|
||||||
|
doc.fm.forEach(fid => FM.订阅频道(fid, uid))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
// 访客默认订阅的频道列表: 一般是所有公开的频道
|
||||||
|
[].forEach(fid => FM.订阅频道(fid, uid))
|
||||||
|
}
|
||||||
|
|
||||||
// 将连接加入到列表
|
// 将连接加入到列表
|
||||||
FM.增加会话(uid, ws)
|
FM.增加会话(uid, ws)
|
||||||
|
|
||||||
// 当用户连接时, 读取其订阅列表
|
|
||||||
db('user').findOne({ uid }, function (err, doc) {
|
|
||||||
if (doc && Array.isArray(doc.fm)) {
|
|
||||||
doc.fm.forEach(fid => FM.订阅频道(fid, uid))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// 收到消息时(只有频道消息)
|
// 收到消息时(只有频道消息)
|
||||||
ws.on('message', function (msg) {
|
ws.on('message', function (msg) {
|
||||||
// 可能需要检查权限, 是否可以向指定目标发送, 或者由客户端过滤
|
// 可能需要检查权限, 是否可以向指定目标发送, 或者由客户端过滤
|
||||||
|
Loading…
Reference in New Issue
Block a user