当前位置: 首页 > 知识库问答 >
问题:

Sec WebSocket接受不匹配

阎昌勋
2023-03-14

我目前正在Python中开发一个WebSocket服务器,但我显然无法计算Sec-WebSocket-Access,这通常不是很困难。这里是我的函数来计算这个(用Python编写):

def get_accept_websocket_key(self, key):
    magic_string = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'
    key += magic_string
    return base64.b64encode(hashlib.sha1(key).hexdigest())

我所有的结果似乎是好的,但我总是在javascript控制台:

WebSocket握手期间出错:秒WebSocket接受不匹配

你有什么解决办法吗?

非常感谢。

共有1个答案

阎咏思
2023-03-14

工作示例。使用"Sec-WebSocket-Protocol"查找代码

from base64 import b64encode, b64decode
from hashlib import sha1

def sendHeaers(self, connect)
    data = ["HTTP/1.1 101 Switching Protocols",
            "\r\nUpgrade: websocket",
            "\r\nConnection: Upgrade"]

    if 'Sec-WebSocket-Protocol' in self.httpHeader:
        data.append("\r\nSec-WebSocket-Protocol: webserver")

    if 'Sec-WebSocket-Key' in self.httpHeader:
        sha1f = sha1()
        sha1f.update(self.httpHeader['Sec-WebSocket-Key'] + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11")
        ticket = b64encode(sha1f.digest())
        data.append("\r\nSec-WebSocket-Accept: " + ticket)

    data.append("\r\n\r\n")
    connect.send( "".join(data) )
 类似资料:
  • 我正在使用tomcat v8,并试图通过RequestBody向我的REST API发送一个对象。这个REST API基本上是RequestMethod。这个API内部的逻辑是删除RequestBody中传递的对象。 这对我不起作用。我后来不得不将我的方法转换为POST,但我仍然想知道DELETE是否不接受RequestBody? 这是来自Spring框架或REST原则的限制,还是与我的Tomca

  • 下面,我有我试图使用的代码。它总是命中捕捉,返回空。月和日都是整数,它们已经过检查,以确保它们在现有日期内。不管怎样,我用“05”测试一个月,用“02”测试一天。由于某种原因, ##/## 输入不起作用吗? 编辑:我正在尝试格式化此输出,使其看起来像“May 02”。当我查看文档时,我看到页面的很大一部分专门用于格式化输出。为什么我的格式不是这样?

  • 这是我的蓝图代码。 内部消息工作。 外部消息不工作。 我在docker中运行Red Hat AMQ 7和Fuse 7。内部消息队列在服务之间正常工作。 使用AMQ 6,当在activemq中设置时,我能够向61613上的嵌入式代理发送和接收STOMP消息。xml 现在,我正在使用AMQ 7.0的默认设置,它将接受程序设置为0.0.0.0:61616和61613,这两个接受STOMP协议。 但是相同

  • 我正在将现有代码迁移到一个超类/子类的情况下。见下文。 方法在父类中:

  • 问题内容: 我很想使用,但似乎不那么灵活。什么是正确的方法? 问题答案: 我已经使用做了类似的操作。这对我有用:

  • 问题内容: 在Java 8中,这有效: 但这不是: Maps允许使用null键,并且List.class.getSuperclass()返回null。但是Collectors.groupingBy在Collectors.java的第907行发出了NPE: 如果我创建自己的收集器,则此行会更改为: 我的问题是: 1)Collectors.groupingBy的Javadoc并未表示不应映射空键。是否