이것은 페이지 6. 发送和接收数据
를 삭제할 것입니다. 다시 한번 확인하세요.
6.1. 发送数据
要通过WebSocket连接发送由/data/组成的_WebSocket消息_,端点必须执行以下步骤。
端点必须确保WebSocket连接处于OPEN状态(参见第4.1节和第4.2.2节)。如果WebSocket连接的状态在任何时候发生变化,端点必须中止以下步骤。
端点必须将/data/封装在WebSocket帧中,如第5.2节所定义。如果要发送的数据很大,或者在端点希望开始发送数据时数据并不完全可用,端点可以选择将数据封装在一系列帧中,如第5.4节所定义。
包含数据的第一个帧的操作码(frame-opcode)必须设置为第5.2节中为要被接收者解释为文本或二进制数据的数据定义的适当值。
包含数据的最后一个帧的FIN位(frame-fin)必须设置为1,如第5.2节所定义。
如果数据由客户端发送,帧必须按照第5.3节所定义进行掩码处理。
如果为WebSocket连接协商了任何扩展(第9节),可能需要根据这些扩展的定义考虑额外的事项。
已经形成的帧必须通过底层网络连接传输。
6.2. 接收数据
为了接收WebSocket数据,端点在底层网络连接上监听。传入的数据必须按照第5.2节所定义的WebSocket帧进行解析。如果收到控制帧(第5.5节),必须按照第5.5节的定义处理该帧。在接收到数据帧(第5.6节)后,端点必须注意数据的类型,如第5.2节中的操作码(frame-opcode)所定义。此帧的“应用数据”被定义为消息的/data/。如果帧组成了一个未分片的消息(第5.4节),则称为_已接收到WebSocket消息_,类型为/type/,数据为/data/。如果帧是分片消息的一部分,则后续数据帧的“应用数据”被连接起来形成/data/。当接收到最后一个片段,如FIN位(frame-fin)所示,称为_已接收到WebSocket消息_,数据为/data/(由片段的“应用数据”连接而成),类型为/type/(从分片消息的第一个帧中注意到)。后续的数据帧必须被解释为属于新的WebSocket消息。
扩展(第9节)可能会改变如何读取数据的语义,特别是包括什么构成消息边界。扩展除了在有效载荷中的“应用数据”之前添加“扩展数据”外,还可以修改“应用数据”(例如通过压缩它)。
服务器必须按照第5.3节所描述的从客户端接收的数据帧中移除掩码。
이것은 페이지 6. 发送和接收数据
를 삭제할 것입니다. 다시 한번 확인하세요.