我正在使用 mongoose 5.4 下面是代码行
char* eventToOCC = NULL;
static int websocket_data_push(struct mg_connection *conn, enum mg_event ev)
{
if ((ev == MG_POLL) && (NULL != conn->uri) && (NULL != eventToOCC))
{
if (strcmp(conn->uri, "/web") == 0 && conn->is_websocket) {
mg_websocket_printf(conn, WEBSOCKET_OPCODE_TEXT, "%s",
eventToOCC);
}
}
return MG_FALSE;
}
void SampleClass::sendEventsToClinet(char* evString)
{
if(evString != NULL)
{
eventToOCC = evString;
printf("EVENT SENT is ---%s---\n",evString);
mg_wakeup_server_ex(mgserver, websocket_data_push, "%lu %s",
(unsigned long) time(NULL), (const char *) evString);
}
else
{
printf("Connection Pointer is NULL\n");
}
return ;
}
在这里,每当调用 mg_wakeup_server_ex() 时,都不会调用回调。我不怀疑调用 C 方法的 c++ 方法,因为它在少数情况下有效。仅在某些地方,不会调用 websocket_data_push () 回调。能否请你帮忙 !!!