我在C中实现了一个WebSocket服务器,并且想知道文本/二进制框架指示符(操作码1和2)的用途是什么。他们为什么在那里?最后,在两种情况下,有效载荷都包含位。当有一个使用websocket的协议时,我知道数据的期望。是因为当它是文本消息时,我可以确定有效载荷只包含UTF-8有效数据吗?
答案 0 :(得分:2)
我将通过指出WebSockets经常在考虑Javascript客户端(即浏览器)的情况下开始我的回答。
当您使用C时,可能会以不同的方式使用不同的操作码,但在使用Javascript时,此差异会控制事件中数据的类型(Blob
与{{3} })。
正如您在问题中指出的那样,字符串始终是有效的UTF-8字节流,而blob
则不是。
这会影响一些数据传输方案(例如JSON解析,它需要UTF-8有效流)。
显然,在C中,这个操作码可以以不同的方式使用,但最好以与潜在的javascript客户端相同的方式使用操作码。
P.S。
有很多Websocket C库和框架(我是String
的作者)。
除非这是一个研究项目,否则我会考虑使用其中一个已建立的框架/库。