django + orbited/stomp使用方法

1 投票
1 回答
973 浏览
提问于 2025-04-16 14:09

我正在使用Django服务器和orbited/stomp服务器一起写一个类似聊天的应用。假设有一些用户已经连接到orbited。当其中一个用户从orbited断开连接时,我该如何通知其他人呢?我尝试了以下代码(这是在客户端的JavaScript代码——也许这就已经错了,应该由服务器来推送通知,对吧?):

function end()
{
  stomp.send('user killed', '/channel');
}

还有

stomp.onclose = end;

但这根本不起作用。然后我使用了

window.onbeforeunload = end;

但同样没有任何明显的效果。我还把end()替换成了其他函数,这个函数只是向Django服务器发送ajax请求。但这样一来,stomp.onclose又没有任何反应,而window.onbeforeunload则给我带来了一个“断开的管道”错误。

所以这些都是尝试实现“客户端在退出前留下消息”的想法。但都失败了。

我甚至不确定我这样做是否正确。有没有办法通知orbited/stomp的用户某个用户已经离开了?任何想法都很受欢迎。

编辑:也许还有其他方法。我读到可以配置orbited服务器,在某个用户的连接关闭时,向应用程序发送一个带有用户密钥的HTTP回调。不幸的是,没有解释如何做到这一点。有人知道答案吗?

1 个回答

0

看起来orbited不太适合这种情况(我和orbited的创作者聊过)。我换成了hookbox,效果很好。

撰写回答