gpt4 book ai didi

mysql - Openfire 服务器未将聊天室保存到 ofMucRoom 表中

转载 作者:行者123 更新时间:2023-11-30 00:35:04 26 4
gpt4 key购买 nike

我正在开发 iOS 聊天应用程序并使用 openfire 服务器。经过成功的研究,我设法创建了一个房间。我正在创建的房间是持久的,我可以看到该房间在开火的“群聊”选项卡中列出,并且也是持久的。但是当我打开 mysql 数据库时,我在 mucRoom 表中看不到任何条目。另外mucMember表也是空的。

即使使用 Spark 客户端,我也无法登录到创建的房间,因为它总是显示“正在连接”...在 iOS 端,我收到 xml 中的响应“房间已锁定,直到配置被确认”。

在 openfire 管理中,当我编辑新创建的房间并将其再次保存回来时,它会出现在数据库中,然后我就可以使用 Spark 客户端发送/接收消息。

有什么问题吗?为什么 openfire 不将空间从缓存保存到数据库?甚至openfire中也没有这样的设置。这是所有地方的主要问题,我找不到正确的答案。有人有解决办法吗?

最佳答案

您的 iOS 客户端响应已告诉您问题所在。房间的设置必须由房间创建者确认。在那之前,它会被锁定,您将继续看到该消息。房间创建流程简述here .

我的客户端应用程序使用 iOS/OSX XMPPFramework,并且我的 Openfire 服务器配置为创建“即时房间”。 XMPPFramework 使房间创建和确认变得极其简单。通过将 XMPP Room 委托(delegate)添加到流中,当用户将其状态发送到尚不存在的房间时,您会收到委托(delegate)回调。此时,您可以确认房间设置或进行适当修改。

#pragma mark XMPPRoom Delegate

- (void)xmppRoomDidCreate:(XMPPRoom *)sender
{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
[self.xmppRoom configureRoomUsingOptions:nil]; //nil confirms the default settings
}

- (void)xmppRoomDidJoin:(XMPPRoom *)sender
{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}

- (void)xmppRoomDidLeave:(XMPPRoom *)sender
{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}

- (void)xmppRoom:(XMPPRoom *)sender occupantDidJoin:(XMPPJID *)occupantJID
{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}

- (void)xmppRoom:(XMPPRoom *)sender occupantDidLeave:(XMPPJID *)occupantJID
{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}

- (void)xmppRoom:(XMPPRoom *)sender didReceiveMessage:(XMPPMessage *)message fromOccupant:(XMPPJID *)occupantJID
{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}

我没有研究房间何时被持久化的详细信息,但我也注意到在我的用例中,管理页面中显示的房间与数据库中的房间存在差异。

关于mysql - Openfire 服务器未将聊天室保存到 ofMucRoom 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22244256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com