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:
|
||||
self.last_ping_tm = time.time()
|
||||
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:
|
||||
_log_debug(f"Failed to send ping: {e}")
|
||||
await asyncio.sleep(self.ping_interval)
|
||||
@@ -219,6 +220,8 @@ class WebSocketApp:
|
||||
reconnect = reconnect
|
||||
|
||||
while self.running:
|
||||
print("self.running")
|
||||
time.sleep(1)
|
||||
try:
|
||||
await self._connect_and_run()
|
||||
except Exception as e:
|
||||
@@ -253,6 +256,7 @@ class WebSocketApp:
|
||||
self._start_ping_thread()
|
||||
|
||||
async for msg in ws:
|
||||
print(f"received msg: {msg.type} - {msg.data}")
|
||||
if not self.running:
|
||||
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):
|
||||
print(f"Received: {message}")
|
||||
relay_manager = RelayManager()
|
||||
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):
|
||||
ws.send_text("Hello, Nostr!")
|
||||
private_key = PrivateKey()
|
||||
|
||||
ws = WebSocketApp(
|
||||
url="wss://relay.damus.io",
|
||||
on_open=on_open,
|
||||
on_message=on_message,
|
||||
on_error=lambda ws, e: print(f"Error: {e}"),
|
||||
on_close=lambda ws, code, reason: print("Closed")
|
||||
)
|
||||
ws.run_forever(ping_interval=30, ping_timeout=10)
|
||||
event = Event("Hello Nostr")
|
||||
private_key.sign_event(event)
|
||||
|
||||
relay_manager.publish_event(event)
|
||||
time.sleep(1) # allow the messages to send
|
||||
|
||||
relay_manager.close_connections()
|
||||
|
||||
@@ -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