Skip to content

Commit 478e685

Browse files
committed
support heartbeat for websocket
1 parent 2255e36 commit 478e685

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

XEngine_Source/XEngine_MQServiceApp/MQService_Net.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ void __stdcall MessageQueue_Callback_HttpLeave(LPCTSTR lpszClientAddr, SOCKET hS
4848
BOOL __stdcall MessageQueue_Callback_WSLogin(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
4949
{
5050
SessionModule_Client_Create(lpszClientAddr);
51+
SocketOpt_HeartBeat_InsertAddrEx(xhWSHeart, lpszClientAddr);
5152
RfcComponents_WSPacket_Create(lpszClientAddr, 0);
5253
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("Websocket客户端连接,Websocket客户端地址:%s"), lpszClientAddr);
5354
return TRUE;
@@ -61,7 +62,9 @@ void __stdcall MessageQueue_Callback_WSRecv(LPCTSTR lpszClientAddr, SOCKET hSock
6162
if (!RfcComponents_WSPacket_Post(lpszClientAddr, lpszRecvMsg, nMsgLen))
6263
{
6364
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("投递Websocket数据包到消息队列失败,错误:%lX"), WSFrame_GetLastError());
65+
return;
6466
}
67+
SocketOpt_HeartBeat_ActiveAddrEx(xhWSHeart, lpszClientAddr);
6568
}
6669
else
6770
{

XEngine_Source/XEngine_MQServiceApp/XEngine_MQServiceApp.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ void ServiceApp_Stop(int signo)
3131
NetCore_TCPXCore_DestroyEx(xhHTTPSocket);
3232
NetCore_TCPXCore_DestroyEx(xhWSSocket);
3333
SocketOpt_HeartBeat_DestoryEx(xhTCPHeart);
34+
SocketOpt_HeartBeat_DestoryEx(xhWSHeart);
3435
ManagePool_Thread_NQDestroy(xhTCPPool);
3536
ManagePool_Thread_NQDestroy(xhHttpPool);
3637
ManagePool_Thread_NQDestroy(xhWSPool);
@@ -131,14 +132,21 @@ int main(int argc, char** argv)
131132
{
132133
if (!SocketOpt_HeartBeat_InitEx(&xhTCPHeart, st_ServiceCfg.st_XTime.nTCPTimeOut, st_ServiceCfg.st_XTime.nTimeCheck, MessageQueue_Callback_TCPHeart))
133134
{
134-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("初始化TCP心跳服务失败,错误:%lX"), XMQModule_GetLastError());
135+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("初始化TCP心跳服务失败,错误:%lX"), NetCore_GetLastError());
135136
goto NETSERVICEEXIT;
136137
}
137138
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化TCP心跳服务成功,句柄:%llu,时间:%d,次数:%d"), xhTCPHeart, st_ServiceCfg.st_XTime.nTCPTimeOut, st_ServiceCfg.st_XTime.nTimeCheck);
139+
140+
if (!SocketOpt_HeartBeat_InitEx(&xhWSHeart, st_ServiceCfg.st_XTime.nWSTimeOut, st_ServiceCfg.st_XTime.nTimeCheck, MessageQueue_Callback_WSHeart))
141+
{
142+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("初始化Websocket心跳服务失败,错误:%lX"), NetCore_GetLastError());
143+
goto NETSERVICEEXIT;
144+
}
145+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化Websocket心跳服务成功,句柄:%llu,时间:%d,次数:%d"), xhTCPHeart, st_ServiceCfg.st_XTime.nWSTimeOut, st_ServiceCfg.st_XTime.nTimeCheck);
138146
}
139147
else
140148
{
141-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("启动服务中,TCP心跳服务被设置为不启用"));
149+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("启动服务中,心跳服务被设置为不启用"));
142150
}
143151

144152
if (!NetCore_TCPXCore_StartEx(&xhTCPSocket, st_ServiceCfg.nTCPPort, st_ServiceCfg.st_XMax.nMaxClient, st_ServiceCfg.st_XMax.nIOThread))
@@ -235,6 +243,7 @@ int main(int argc, char** argv)
235243
NetCore_TCPXCore_DestroyEx(xhHTTPSocket);
236244
NetCore_TCPXCore_DestroyEx(xhWSSocket);
237245
SocketOpt_HeartBeat_DestoryEx(xhTCPHeart);
246+
SocketOpt_HeartBeat_DestoryEx(xhWSHeart);
238247
ManagePool_Thread_NQDestroy(xhTCPPool);
239248
ManagePool_Thread_NQDestroy(xhHttpPool);
240249
ManagePool_Thread_NQDestroy(xhWSPool);

0 commit comments

Comments
 (0)