如何解决Libwesockets:如何从websocket正确读取文本json数据?
我有这样的websocket实现,以前可以使用,但是现在不行,因为我升级了库版本。
int Handle(struct lws *wsi,enum lws_callback_reasons reason,void *user,void *in,size_t len) {
switch( reason ) {
case LWS_CALLBACK_CLOSED: {
lwsl_notice("Client disconnected\n");
break;
}
case LWS_CALLBACK_ESTABLISHED: {
lwsl_notice("Client Connected\n");
break;
}
case LWS_CALLBACK_RECEIVE: {
lwsl_notice("Message: %s\n",in);
break;
}
default:
break;
}
return 0;
}
static struct lws_protocols protocols[] =
{
{
"server",Handle,sizeof(struct Session),LWS_MESSAGE_CHUNK_SIZE,},{ NULL,NULL,0 }
};
int Start() {
struct lws_context_creation_info info;
memset( &info,sizeof(info) );
info.port = 3018;
info.protocols = protocols;
info.gid = -1;
info.uid = -1;
struct lws_context *context = lws_create_context( &info );
while( 1 ) {
lws_service( context,1000000 );
}
lws_context_destroy( context );
}
问题在于数据的末尾带有一些噪声。
如果我从一端{}
发送,则在另一端{}/S4T1u3F2O1AA82K7Kg=
接收。因此,*in
在实际消息字符串之后包含此噪声。
如何正确接收数据?
我尝试了不同的示例,但它们看起来过于复杂。
解决方法
我设法将正确数量的数据复制到字符串中。 我的解决方案:
char data[len];
memcpy(data,in,len);
data[len] = '\0';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。