esp8266/scripts/webrepl: WebREPL based on C-level websocket object.

This commit is contained in:
Paul Sokolovsky 2016-04-24 23:04:21 +03:00
parent 0d10e5310a
commit 7c40b15a3f
1 changed files with 42 additions and 0 deletions

View File

@ -0,0 +1,42 @@
# This module should be imported from REPL, not run from command line.
import socket
import uos
import websocket
import websocket_helper
listen_s = None
client_s = None
def wait_connection():
global listen_s, client_s
listen_s = socket.socket()
listen_s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
ai = socket.getaddrinfo("0.0.0.0", 8266)
print("Bind address info:", ai)
addr = ai[0][4]
listen_s.bind(addr)
listen_s.listen(1)
client_s, remote_addr = listen_s.accept()
print(client_s)
return client_s
def start():
global listen_s, client_s
uos.dupterm(None)
if client_s:
client_s.close()
if listen_s:
listen_s.close()
cl = wait_connection()
websocket_helper.server_handshake(cl)
ws = websocket.websocket(cl, True)
cl.setblocking(False)
# notify REPL on socket incoming data
cl.setsockopt(socket.SOL_SOCKET, 20, uos.dupterm_notify)
uos.dupterm(ws)
print("Connected")
start()