我在实现它时正在制作聊天应用程序我需要自动更新消息,因为我正在使用asyntacks。为此,我怀疑每次我们都无法刷新asyntaks选项。那么,有没有办法或任何其他方法来刷新聊天活动的每一秒。
Chat.java
#include <QEventLoop>
#include <QTimer>
// ...
// In the main window constructor:
connect(myButton, SIGNAL(pressed()), this, SLOT(buttonPressed()));
connect(myButton, SIGNAL(released()), this, SLOT(buttonReleased()));
// ...
void MyMainWindow::buttonPressed()
{
mutex.lock();
// Here, I do the lengthy stuff, which is simulated by a loop
// that waits some time.
QEventLoop loop;
QTimer::singleShot(1000, &loop, SLOT(quit()));
loop.exec();
mutex.unlock();
}
void MyMainWindow::buttonReleased()
{
mutex.lock();
// ... (some stuff)
mutex.unlock();
}
答案 0 :(得分:0)
每秒刷新聊天是非常糟糕的,因为你会失去很多服务器效率。你应该这样做:
或者使用Soket.io或weboskect。
然后:
我觉得聊天是个好主意。在这里,你有关于socket.io
的demo聊天玩得开心
答案 1 :(得分:0)
并不是每秒刷新一次聊天来检索消息的好方法。 这可能会使您的服务器过载,从而避免了过多的请求。
要实现实时聊天,如果您收到任何新消息,您的服务器应发送信息。
在客户端,您需要为此设置一个侦听器。触发侦听器后,您可以下载新消息。
以ConnectyCube Android implementation为例:
IncomingMessagesManager incomingMessagesManager = chatService.getIncomingMessagesManager();
incomingMessagesManager.addDialogMessageListener(new ChatDialogMessageListener() {
@Override
public void processMessage(String dialogId, ConnectycubeChatMessage message, Integer senderId) {
}
@Override
public void processError(String dialogId, ChatException exception, ConnectycubeChatMessage message, Integer senderId) {
}
});