gpt4 book ai didi

c# - 通过 C# Socket 发送 WebSocket 消息

转载 作者:行者123 更新时间:2023-11-30 17:08:45 24 4
gpt4 key购买 nike

我在看 Create "Hello World" WebSocket example并开始尝试调整它以通过在控制台输入的 WebSocket 发送自定义消息,但我在理解代码时遇到了一些问题。

我的问题是什么是对我自己的消息进行编码的正确方法,以便它可以根据我上面链接的答案正确发送

client.Send(my-own-message);

最佳答案

你真的应该go to the source . Websocket 规范实际上非常易于阅读,它告诉您应该如何格式化消息。

但简而言之,假设您已经完成了建立连接的初始握手,以下是 Websocket 框架应包含的数据:

  • 一个操作码,如果消息的格式为 UTF-8 文本,则值为 0x81 的单个字节,如果消息为二进制数据,则为 0x82(请注意,一些浏览器不支持后者)
  • 一个或多个字节的长度字段,描述消息的长度。第一个字节的最高有效位必须在客户端发送的消息上设置(它表示负载被屏蔽,这必须在客户端到服务器的消息上完成,并且必须完成在服务器到客户端的消息上)。长度字段可以具有可变长度:如果长度低于 126 字节,则将其简单地编码为单个字节(保留最高有效位以指示屏蔽,如前所述)。如果长度小于 65KB,则第一个字节的 7 个可用位取值 126,随后的两个字节将长度作为 16 位整数包含。否则,第一个字节的7位取值127,随后的8个字节包含64位整数的长度。
  • 一个 4 字节的掩码 key ,必须为每条消息随机选择
  • 最后,您要发送的实际消息。这必须使用掩蔽键来掩蔽,只需将每个字节与掩蔽键的一个字节进行异或运算即可。 (消息的字节 i 应该与屏蔽 key 的第 i%4 字节一起进行异或)。

这样做,您就创建了一个有效的 websocket 框架,其中包含 UTF8 文本或原始二进制数据。如您所见,其中涉及几个步骤,但每个步骤都相对简单。 (再一次,请检查我链接到的 RFC,因为我只是凭内存写下所有这些,所以可能会有一些小的错误)

关于c# - 通过 C# Socket 发送 WebSocket 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13540621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com