esp8266开发——使用micropython下的websocket

esp8266开发——使用micropython下的websocket

说明

  • micropython的标准库中包含了websocket的代码,但是我没有测试
  • 我直接修改了webrepl的部分关于websocket的代码,原版的代码里面是无法让chrome作为客户端连接的(在数据解包部分几乎没有实现)
  • 仍然有很多websocket标准,比如分包传输等没有实现

代码

  • websocket_helper.py 这个握手协议实现得非常简单
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
try:
    import ubinascii as binascii
except:
    import binascii
try:
    import uhashlib as hashlib
except:
    import hashlib
    
DEBUG = 0

def server_handshake(sock):
    clr = sock.makefile("rwb", 0)
    l = clr.readline()
    #sys.stdout.write(repr(l))
    webkey = None
    while 1:
        l = clr.readline()
        if not l:
            raise OSError("EOF in headers")
        if l == b"\r\n":
            break
    #    sys.stdout.write(l)
        h, v = [x.strip() for x in l.split(b":", 1)]
        if DEBUG:
            print((h, v))
        if h == b'Sec-WebSocket-Key':
            webkey = v
    if not webkey:
        raise OSError("Not a websocket request")
    if DEBUG:
        print("Sec-WebSocket-Key:", webkey, len(webkey))
    respkey = webkey + b"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
    respkey = hashlib.sha1(respkey).digest()
    respkey = binascii.b2a_base64(resp
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值