接收服务器显示帧控制错误,Websocket连接关闭,出现错误“接收到意外的继续帧”...

在尝试使用Python建立WebSocket服务器并与Chrome浏览器建立连接时,遇到'接收到意外的继续帧'错误。该问题可能与数据帧的发送方式不遵循rfc6455标准有关。服务器代码中,尽管进行了handshake处理,但在发送数据时可能存在问题。目前,已知使用的Python版本为2.7,WebSocket库为websocket13,浏览器为Chrome 41。尽管有相似问题的讨论,但解决方案尚不明确,需要进一步调试服务器代码以定位并修复问题。
摘要由CSDN通过智能技术生成

我只是想用WebSockets。我用python编写服务器代码。服务器运行良好,但当尝试使用浏览器连接到套接字时,我得到了错误"WebSocket connection to 'ws://localhost:9876/' failed: Received

unexpected continuation frame"

当我在互联网上提到时,我明白这是与从服务器发送的数据帧有关的事情。在发送数据时,我尝试遵循these(rfc6455)标准,即使我无法实现websocket连接。几乎类似的问题被问到here,但这是一个老帖子,也不清楚解决办法。在

我的服务器很简单。。在import socket

def handle(s):

print repr(s.recv(4096))

s = socket.socket()

s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)

s.bind(('',9876))

s.listen(2)

handshakes='\

HTTP/1.1 101 Web Socket Protocol Handshake\r\n\

Upgrade: WebSocket\r\n\

Connection: Upgrade\r\n\

Sec-WebSocket-Origin: null\r\n\

Sec-WebSocket-Location: ws://localhost:9876/\r\n\

'

def handshake(hs):

hslist = hs.split('\r\n')

body 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 Java 代码示例,用于接收 WebSocket 发送的 Ping 控制: ```java import java.net.URI; import java.net.http.HttpClient; import java.net.http.WebSocket; import java.nio.ByteBuffer; import java.util.concurrent.CompletionStage; public class WebSocketClient { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient(); WebSocket webSocket = client.newWebSocketBuilder() .buildAsync(URI.create("wss://example.com/"), new WebSocketListener()) .join(); // Send a Ping control frame ByteBuffer buffer = ByteBuffer.wrap(new byte[]{0x9, 0x0}); webSocket.sendPing(buffer); // Wait for the WebSocket connection to close webSocket.waitUntilClosed(); } static class WebSocketListener implements WebSocket.Listener { @Override public void onPing(WebSocket webSocket, ByteBuffer message) { // Handle the Ping control frame System.out.println("Received Ping control frame: " + message); } @Override public CompletionStage<?> onClose(WebSocket webSocket, int statusCode, String reason) { System.out.println("WebSocket closed with statusCode: " + statusCode + ", reason: " + reason); return WebSocket.Listener.super.onClose(webSocket, statusCode, reason); } } } ``` 在这个示例中,我们使用 Java 11 中的 WebSocket API 来创建一个 WebSocket 连接,并在连接建立后发送一个 Ping 控制。当服务器响应 Ping 控制时,WebSocketListener 中的 onPing() 方法将被调用,并打印出接收到的消息。最后,我们等待 WebSocket 连接关闭
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值