mirror of
https://github.com/m5stack/MicroPythonOS.git
synced 2026-05-20 11:51:27 -07:00
debug websocket
This commit is contained in:
@@ -0,0 +1,29 @@
|
|||||||
|
# for micropython compatibility
|
||||||
|
|
||||||
|
class UserList:
|
||||||
|
def __init__(self, initlist=None):
|
||||||
|
self.data = list(initlist) if initlist is not None else []
|
||||||
|
|
||||||
|
# Support basic list operations
|
||||||
|
def __getitem__(self, index):
|
||||||
|
return self.data[index]
|
||||||
|
|
||||||
|
def __setitem__(self, index, value):
|
||||||
|
self.data[index] = value
|
||||||
|
|
||||||
|
def __len__(self):
|
||||||
|
return len(self.data)
|
||||||
|
|
||||||
|
def __iter__(self):
|
||||||
|
return iter(self.data)
|
||||||
|
|
||||||
|
def append(self, item):
|
||||||
|
self.data.append(item)
|
||||||
|
|
||||||
|
def extend(self, other):
|
||||||
|
self.data.extend(other)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f"{self.__class__.__name__}({self.data!r})"
|
||||||
|
|
||||||
|
|
||||||
@@ -147,8 +147,9 @@ class WebSocketApp:
|
|||||||
while self.running and self.ping_interval:
|
while self.running and self.ping_interval:
|
||||||
self.last_ping_tm = time.time()
|
self.last_ping_tm = time.time()
|
||||||
try:
|
try:
|
||||||
await self.ws.send_bytes(self.ping_payload.encode() if isinstance(self.ping_payload, str) else self.ping_payload)
|
|
||||||
_log_debug("Sending ping")
|
#await self.ws.send_bytes(self.ping_payload.encode() if isinstance(self.ping_payload, str) else self.ping_payload)
|
||||||
|
_log_debug("NOT Sending ping because it seems corrupt")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_log_debug(f"Failed to send ping: {e}")
|
_log_debug(f"Failed to send ping: {e}")
|
||||||
await asyncio.sleep(self.ping_interval)
|
await asyncio.sleep(self.ping_interval)
|
||||||
@@ -219,6 +220,8 @@ class WebSocketApp:
|
|||||||
reconnect = reconnect
|
reconnect = reconnect
|
||||||
|
|
||||||
while self.running:
|
while self.running:
|
||||||
|
print("self.running")
|
||||||
|
time.sleep(1)
|
||||||
try:
|
try:
|
||||||
await self._connect_and_run()
|
await self._connect_and_run()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -253,6 +256,7 @@ class WebSocketApp:
|
|||||||
self._start_ping_thread()
|
self._start_ping_thread()
|
||||||
|
|
||||||
async for msg in ws:
|
async for msg in ws:
|
||||||
|
print(f"received msg: {msg.type} - {msg.data}")
|
||||||
if not self.running:
|
if not self.running:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
import json
|
||||||
|
import ssl
|
||||||
|
import time
|
||||||
|
from nostr.filter import Filter, Filters
|
||||||
|
from nostr.event import Event, EventKind
|
||||||
|
from nostr.relay_manager import RelayManager
|
||||||
|
from nostr.message_type import ClientMessageType
|
||||||
|
|
||||||
|
#filters = Filters([Filter(authors=[<a nostr pubkey in hex>], kinds=[EventKind.TEXT_NOTE])])
|
||||||
|
#filters = Filters([Filter(authors="04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9", kinds=[EventKind.TEXT_NOTE])])
|
||||||
|
timestamp = round(time.time()-1000)
|
||||||
|
#filters = Filters([Filter(authors="04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9", kinds=[9735], since=timestamp)])
|
||||||
|
filters = Filters([Filter(kinds=[9735], since=timestamp)])
|
||||||
|
|
||||||
|
subscription_id = "ihopethisworks2" + str(time.time())
|
||||||
|
request = [ClientMessageType.REQUEST, subscription_id]
|
||||||
|
json.dumps(request)
|
||||||
|
request.extend(filters.to_json_array())
|
||||||
|
message = json.dumps(request)
|
||||||
|
# ["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]
|
||||||
|
print(f"sending this: {message}")
|
||||||
|
|
||||||
|
|
||||||
|
relay_manager = RelayManager()
|
||||||
|
#relay_manager.add_relay("wss://nostr-pub.wellorder.net")
|
||||||
|
relay_manager.add_relay("wss://relay.damus.io")
|
||||||
|
relay_manager.add_subscription(subscription_id, filters)
|
||||||
|
time.sleep(2) # allow the connections to open
|
||||||
|
|
||||||
|
print("opening connections")
|
||||||
|
relay_manager.open_connections({"cert_reqs": ssl.CERT_NONE}) # NOTE: This disables ssl certificate verification
|
||||||
|
time.sleep(2) # allow the connections to open
|
||||||
|
|
||||||
|
print("publishing:")
|
||||||
|
relay_manager.publish_message(message)
|
||||||
|
time.sleep(1) # allow the messages to send
|
||||||
|
|
||||||
|
print("printing events:")
|
||||||
|
#while relay_manager.message_pool.has_events():
|
||||||
|
for _ in range(60):
|
||||||
|
time.sleep(1)
|
||||||
|
print(".")
|
||||||
|
try:
|
||||||
|
event_msg = relay_manager.message_pool.get_event()
|
||||||
|
print(event_msg.event.content)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"pool.get_event() got error: {e}")
|
||||||
|
|
||||||
|
|
||||||
|
print("closing:")
|
||||||
|
relay_manager.close_connections()
|
||||||
@@ -1,16 +1,23 @@
|
|||||||
from websocket import WebSocketApp
|
import json
|
||||||
|
import ssl
|
||||||
|
import time
|
||||||
|
from nostr.event import Event
|
||||||
|
from nostr.relay_manager import RelayManager
|
||||||
|
from nostr.message_type import ClientMessageType
|
||||||
|
from nostr.key import PrivateKey
|
||||||
|
|
||||||
def on_message(ws, message):
|
relay_manager = RelayManager()
|
||||||
print(f"Received: {message}")
|
relay_manager.add_relay("wss://nostr-pub.wellorder.net")
|
||||||
|
relay_manager.add_relay("wss://relay.damus.io")
|
||||||
|
relay_manager.open_connections({"cert_reqs": ssl.CERT_NONE}) # NOTE: This disables ssl certificate verification
|
||||||
|
time.sleep(5) # allow the connections to open
|
||||||
|
|
||||||
def on_open(ws):
|
private_key = PrivateKey()
|
||||||
ws.send_text("Hello, Nostr!")
|
|
||||||
|
|
||||||
ws = WebSocketApp(
|
event = Event("Hello Nostr")
|
||||||
url="wss://relay.damus.io",
|
private_key.sign_event(event)
|
||||||
on_open=on_open,
|
|
||||||
on_message=on_message,
|
relay_manager.publish_event(event)
|
||||||
on_error=lambda ws, e: print(f"Error: {e}"),
|
time.sleep(1) # allow the messages to send
|
||||||
on_close=lambda ws, code, reason: print("Closed")
|
|
||||||
)
|
relay_manager.close_connections()
|
||||||
ws.run_forever(ping_interval=30, ping_timeout=10)
|
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
|
||||||
|
import websocket
|
||||||
|
import _thread
|
||||||
|
import time
|
||||||
|
|
||||||
|
def on_message(wsapp, message):
|
||||||
|
print(f"got message: {message}")
|
||||||
|
|
||||||
|
def on_ping(wsapp, message):
|
||||||
|
print("Got a ping! A pong reply has already been automatically sent.")
|
||||||
|
|
||||||
|
def on_pong(wsapp, message):
|
||||||
|
print("Got a pong! No need to respond")
|
||||||
|
|
||||||
|
|
||||||
|
def on_error(wsapp, message):
|
||||||
|
print(f"Got error: {message}")
|
||||||
|
|
||||||
|
|
||||||
|
#wsapp = websocket.WebSocketApp("wss://testnet.binance.vision/ws/btcusdt@trade", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
#wsapp = websocket.WebSocketApp("wss://echo.websocket.events", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
wsapp = websocket.WebSocketApp("wss://relay.damus.io", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
#wsapp = websocket.WebSocketApp("wss://relay.primal.net", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
|
||||||
|
def stress_test_thread():
|
||||||
|
print("before run_forever")
|
||||||
|
#wsapp.run_forever(ping_interval=30, ping_timeout=10)
|
||||||
|
#wsapp.run_forever(ping_interval=300, ping_timeout=10, ping_payload="This is an optional ping payload")
|
||||||
|
wsapp.run_forever()
|
||||||
|
print("after run_forever")
|
||||||
|
|
||||||
|
_thread.stack_size(32*1024)
|
||||||
|
_thread.start_new_thread(stress_test_thread, ())
|
||||||
|
|
||||||
|
time.sleep(5)
|
||||||
|
print("sending it")
|
||||||
|
# nothing:
|
||||||
|
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]')
|
||||||
|
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1] }]')
|
||||||
|
# this worked at some point:
|
||||||
|
#wsapp.send_text('["REQ","index3",{"kinds":[9735]}]')
|
||||||
|
#wsapp.send_text('["REQ","index3",{"kinds":[9735], "since": 1745086888}]')
|
||||||
|
tosend = '["REQ","index3",{"kinds":[9735], "since": '
|
||||||
|
tosend += str(round(time.time()-1000))
|
||||||
|
tosend += '}]'
|
||||||
|
print(f"sending: {tosend}")
|
||||||
|
wsapp.send_text(tosend)
|
||||||
|
#1745086888
|
||||||
|
#["REQ","index",{"kinds":[9735]}]
|
||||||
|
|
||||||
|
|
||||||
|
print("waiting 30 seconds...")
|
||||||
|
time.sleep(30)
|
||||||
|
#print("sending again")
|
||||||
|
#wsapp.send_text('again')
|
||||||
|
|
||||||
|
|
||||||
|
time.sleep(25)
|
||||||
|
#print("sending more")
|
||||||
|
#wsapp.send_text('more')
|
||||||
|
|
||||||
|
wsapp.close()
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
import websocket
|
||||||
|
import _thread
|
||||||
|
import time
|
||||||
|
|
||||||
|
def on_message(wsapp, message):
|
||||||
|
print(f"got message: {message}")
|
||||||
|
|
||||||
|
def on_ping(wsapp, message):
|
||||||
|
print("Got a ping! A pong reply has already been automatically sent.")
|
||||||
|
|
||||||
|
def on_pong(wsapp, message):
|
||||||
|
print("Got a pong! No need to respond")
|
||||||
|
|
||||||
|
|
||||||
|
def on_error(wsapp, message):
|
||||||
|
print(f"Got error: {message}")
|
||||||
|
|
||||||
|
|
||||||
|
#wsapp = websocket.WebSocketApp("wss://testnet.binance.vision/ws/btcusdt@trade", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
#wsapp = websocket.WebSocketApp("wss://echo.websocket.events", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
wsapp = websocket.WebSocketApp("wss://relay.damus.io", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
#wsapp = websocket.WebSocketApp("wss://relay.primal.net", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
|
||||||
|
def stress_test_thread():
|
||||||
|
print("before run_forever")
|
||||||
|
#wsapp.run_forever(ping_interval=30, ping_timeout=10)
|
||||||
|
wsapp.run_forever(ping_interval=30, ping_timeout=10, ping_payload="This is an optional ping payload")
|
||||||
|
print("after run_forever")
|
||||||
|
|
||||||
|
_thread.stack_size(32*1024)
|
||||||
|
_thread.start_new_thread(stress_test_thread, ())
|
||||||
|
|
||||||
|
time.sleep(5)
|
||||||
|
print("sending it")
|
||||||
|
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]')
|
||||||
|
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1] }]')
|
||||||
|
wsapp.send_text('["REQ","index2",{"kinds":[9735]}]')
|
||||||
|
#["REQ","index",{"kinds":[9735]}]
|
||||||
|
|
||||||
|
|
||||||
|
time.sleep(15)
|
||||||
|
print("sending again")
|
||||||
|
wsapp.send_text('again')
|
||||||
|
|
||||||
|
|
||||||
|
time.sleep(25)
|
||||||
|
print("sending more")
|
||||||
|
wsapp.send_text('more')
|
||||||
|
|
||||||
|
wsapp.close()
|
||||||
|
|
||||||
|
|
||||||
+68
@@ -0,0 +1,68 @@
|
|||||||
|
|
||||||
|
import websocket
|
||||||
|
import _thread
|
||||||
|
import time
|
||||||
|
|
||||||
|
def on_message(wsapp, message):
|
||||||
|
print(f"got message: {message}")
|
||||||
|
|
||||||
|
def on_ping(wsapp, message):
|
||||||
|
print("Got a ping! A pong reply has already been automatically sent.")
|
||||||
|
|
||||||
|
def on_pong(wsapp, message):
|
||||||
|
print("Got a pong! No need to respond")
|
||||||
|
|
||||||
|
|
||||||
|
def on_error(wsapp, message):
|
||||||
|
print(f"Got error: {message}")
|
||||||
|
|
||||||
|
|
||||||
|
#wsapp = websocket.WebSocketApp("wss://testnet.binance.vision/ws/btcusdt@trade", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
#wsapp = websocket.WebSocketApp("wss://echo.websocket.events", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
wsapp = websocket.WebSocketApp("wss://relay.damus.io", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
#wsapp = websocket.WebSocketApp("wss://relay.primal.net", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||||
|
|
||||||
|
|
||||||
|
def stress_test_thread():
|
||||||
|
print("before run_forever")
|
||||||
|
#wsapp.run_forever(ping_interval=30, ping_timeout=10)
|
||||||
|
#wsapp.run_forever(ping_interval=300, ping_timeout=10, ping_payload="This is an optional ping payload")
|
||||||
|
wsapp.run_forever()
|
||||||
|
print("after run_forever")
|
||||||
|
|
||||||
|
_thread.stack_size(32*1024)
|
||||||
|
_thread.start_new_thread(stress_test_thread, ())
|
||||||
|
|
||||||
|
time.sleep(5)
|
||||||
|
print("sending it")
|
||||||
|
# nothing:
|
||||||
|
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]')
|
||||||
|
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1] }]')
|
||||||
|
# this worked at some point:
|
||||||
|
#wsapp.send_text('["REQ","index3",{"kinds":[9735]}]')
|
||||||
|
#wsapp.send_text('["REQ","index3",{"kinds":[9735], "since": 1745086888}]')
|
||||||
|
tosend = '["REQ","index3",{"kinds":[9735], "since": '
|
||||||
|
tosend += str(round(time.time()-1000))
|
||||||
|
tosend += '}]'
|
||||||
|
print(f"sending: {tosend}")
|
||||||
|
wsapp.send_text(tosend)
|
||||||
|
#1745086888
|
||||||
|
#["REQ","index",{"kinds":[9735]}]
|
||||||
|
|
||||||
|
|
||||||
|
print("waiting 30 seconds...")
|
||||||
|
time.sleep(30)
|
||||||
|
#print("sending again")
|
||||||
|
#wsapp.send_text('again')
|
||||||
|
|
||||||
|
|
||||||
|
time.sleep(25)
|
||||||
|
#print("sending more")
|
||||||
|
#wsapp.send_text('more')
|
||||||
|
|
||||||
|
wsapp.close()
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user