Skip to content

Commit a85d4a7

Browse files
debug websocket
1 parent 26fce3b commit a85d4a7

7 files changed

+299
-15
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# for micropython compatibility
2+
3+
class UserList:
4+
def __init__(self, initlist=None):
5+
self.data = list(initlist) if initlist is not None else []
6+
7+
# Support basic list operations
8+
def __getitem__(self, index):
9+
return self.data[index]
10+
11+
def __setitem__(self, index, value):
12+
self.data[index] = value
13+
14+
def __len__(self):
15+
return len(self.data)
16+
17+
def __iter__(self):
18+
return iter(self.data)
19+
20+
def append(self, item):
21+
self.data.append(item)
22+
23+
def extend(self, other):
24+
self.data.extend(other)
25+
26+
def __repr__(self):
27+
return f"{self.__class__.__name__}({self.data!r})"
28+
29+

internal_filesystem/lib/websocket.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,9 @@ async def _send_ping_async(self):
147147
while self.running and self.ping_interval:
148148
self.last_ping_tm = time.time()
149149
try:
150-
await self.ws.send_bytes(self.ping_payload.encode() if isinstance(self.ping_payload, str) else self.ping_payload)
151-
_log_debug("Sending ping")
150+
151+
#await self.ws.send_bytes(self.ping_payload.encode() if isinstance(self.ping_payload, str) else self.ping_payload)
152+
_log_debug("NOT Sending ping because it seems corrupt")
152153
except Exception as e:
153154
_log_debug(f"Failed to send ping: {e}")
154155
await asyncio.sleep(self.ping_interval)
@@ -219,6 +220,8 @@ async def _async_main(self):
219220
reconnect = reconnect
220221

221222
while self.running:
223+
print("self.running")
224+
time.sleep(1)
222225
try:
223226
await self._connect_and_run()
224227
except Exception as e:
@@ -253,6 +256,7 @@ async def _connect_and_run(self):
253256
self._start_ping_thread()
254257

255258
async for msg in ws:
259+
print(f"received msg: {msg.type} - {msg.data}")
256260
if not self.running:
257261
break
258262

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import json
2+
import ssl
3+
import time
4+
from nostr.filter import Filter, Filters
5+
from nostr.event import Event, EventKind
6+
from nostr.relay_manager import RelayManager
7+
from nostr.message_type import ClientMessageType
8+
9+
#filters = Filters([Filter(authors=[<a nostr pubkey in hex>], kinds=[EventKind.TEXT_NOTE])])
10+
#filters = Filters([Filter(authors="04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9", kinds=[EventKind.TEXT_NOTE])])
11+
timestamp = round(time.time()-1000)
12+
#filters = Filters([Filter(authors="04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9", kinds=[9735], since=timestamp)])
13+
filters = Filters([Filter(kinds=[9735], since=timestamp)])
14+
15+
subscription_id = "ihopethisworks2" + str(time.time())
16+
request = [ClientMessageType.REQUEST, subscription_id]
17+
json.dumps(request)
18+
request.extend(filters.to_json_array())
19+
message = json.dumps(request)
20+
# ["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]
21+
print(f"sending this: {message}")
22+
23+
24+
relay_manager = RelayManager()
25+
#relay_manager.add_relay("wss://nostr-pub.wellorder.net")
26+
relay_manager.add_relay("wss://relay.damus.io")
27+
relay_manager.add_subscription(subscription_id, filters)
28+
time.sleep(2) # allow the connections to open
29+
30+
print("opening connections")
31+
relay_manager.open_connections({"cert_reqs": ssl.CERT_NONE}) # NOTE: This disables ssl certificate verification
32+
time.sleep(2) # allow the connections to open
33+
34+
print("publishing:")
35+
relay_manager.publish_message(message)
36+
time.sleep(1) # allow the messages to send
37+
38+
print("printing events:")
39+
#while relay_manager.message_pool.has_events():
40+
for _ in range(60):
41+
time.sleep(1)
42+
print(".")
43+
try:
44+
event_msg = relay_manager.message_pool.get_event()
45+
print(event_msg.event.content)
46+
except Exception as e:
47+
print(f"pool.get_event() got error: {e}")
48+
49+
50+
print("closing:")
51+
relay_manager.close_connections()
Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
1-
from websocket import WebSocketApp
1+
import json
2+
import ssl
3+
import time
4+
from nostr.event import Event
5+
from nostr.relay_manager import RelayManager
6+
from nostr.message_type import ClientMessageType
7+
from nostr.key import PrivateKey
28

3-
def on_message(ws, message):
4-
print(f"Received: {message}")
9+
relay_manager = RelayManager()
10+
relay_manager.add_relay("wss://nostr-pub.wellorder.net")
11+
relay_manager.add_relay("wss://relay.damus.io")
12+
relay_manager.open_connections({"cert_reqs": ssl.CERT_NONE}) # NOTE: This disables ssl certificate verification
13+
time.sleep(5) # allow the connections to open
514

6-
def on_open(ws):
7-
ws.send_text("Hello, Nostr!")
15+
private_key = PrivateKey()
816

9-
ws = WebSocketApp(
10-
url="wss://relay.damus.io",
11-
on_open=on_open,
12-
on_message=on_message,
13-
on_error=lambda ws, e: print(f"Error: {e}"),
14-
on_close=lambda ws, code, reason: print("Closed")
15-
)
16-
ws.run_forever(ping_interval=30, ping_timeout=10)
17+
event = Event("Hello Nostr")
18+
private_key.sign_event(event)
19+
20+
relay_manager.publish_event(event)
21+
time.sleep(1) # allow the messages to send
22+
23+
relay_manager.close_connections()
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
2+
import websocket
3+
import _thread
4+
import time
5+
6+
def on_message(wsapp, message):
7+
print(f"got message: {message}")
8+
9+
def on_ping(wsapp, message):
10+
print("Got a ping! A pong reply has already been automatically sent.")
11+
12+
def on_pong(wsapp, message):
13+
print("Got a pong! No need to respond")
14+
15+
16+
def on_error(wsapp, message):
17+
print(f"Got error: {message}")
18+
19+
20+
#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)
21+
22+
#wsapp = websocket.WebSocketApp("wss://echo.websocket.events", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
23+
24+
wsapp = websocket.WebSocketApp("wss://relay.damus.io", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
25+
26+
#wsapp = websocket.WebSocketApp("wss://relay.primal.net", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
27+
28+
29+
def stress_test_thread():
30+
print("before run_forever")
31+
#wsapp.run_forever(ping_interval=30, ping_timeout=10)
32+
#wsapp.run_forever(ping_interval=300, ping_timeout=10, ping_payload="This is an optional ping payload")
33+
wsapp.run_forever()
34+
print("after run_forever")
35+
36+
_thread.stack_size(32*1024)
37+
_thread.start_new_thread(stress_test_thread, ())
38+
39+
time.sleep(5)
40+
print("sending it")
41+
# nothing:
42+
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]')
43+
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1] }]')
44+
# this worked at some point:
45+
#wsapp.send_text('["REQ","index3",{"kinds":[9735]}]')
46+
#wsapp.send_text('["REQ","index3",{"kinds":[9735], "since": 1745086888}]')
47+
tosend = '["REQ","index3",{"kinds":[9735], "since": '
48+
tosend += str(round(time.time()-1000))
49+
tosend += '}]'
50+
print(f"sending: {tosend}")
51+
wsapp.send_text(tosend)
52+
#1745086888
53+
#["REQ","index",{"kinds":[9735]}]
54+
55+
56+
print("waiting 30 seconds...")
57+
time.sleep(30)
58+
#print("sending again")
59+
#wsapp.send_text('again')
60+
61+
62+
time.sleep(25)
63+
#print("sending more")
64+
#wsapp.send_text('more')
65+
66+
wsapp.close()
67+
68+
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
2+
import websocket
3+
import _thread
4+
import time
5+
6+
def on_message(wsapp, message):
7+
print(f"got message: {message}")
8+
9+
def on_ping(wsapp, message):
10+
print("Got a ping! A pong reply has already been automatically sent.")
11+
12+
def on_pong(wsapp, message):
13+
print("Got a pong! No need to respond")
14+
15+
16+
def on_error(wsapp, message):
17+
print(f"Got error: {message}")
18+
19+
20+
#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)
21+
22+
#wsapp = websocket.WebSocketApp("wss://echo.websocket.events", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
23+
24+
wsapp = websocket.WebSocketApp("wss://relay.damus.io", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
25+
26+
#wsapp = websocket.WebSocketApp("wss://relay.primal.net", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
27+
28+
29+
def stress_test_thread():
30+
print("before run_forever")
31+
#wsapp.run_forever(ping_interval=30, ping_timeout=10)
32+
wsapp.run_forever(ping_interval=30, ping_timeout=10, ping_payload="This is an optional ping payload")
33+
print("after run_forever")
34+
35+
_thread.stack_size(32*1024)
36+
_thread.start_new_thread(stress_test_thread, ())
37+
38+
time.sleep(5)
39+
print("sending it")
40+
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]')
41+
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1] }]')
42+
wsapp.send_text('["REQ","index2",{"kinds":[9735]}]')
43+
#["REQ","index",{"kinds":[9735]}]
44+
45+
46+
time.sleep(15)
47+
print("sending again")
48+
wsapp.send_text('again')
49+
50+
51+
time.sleep(25)
52+
print("sending more")
53+
wsapp.send_text('more')
54+
55+
wsapp.close()
56+
57+
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
2+
import websocket
3+
import _thread
4+
import time
5+
6+
def on_message(wsapp, message):
7+
print(f"got message: {message}")
8+
9+
def on_ping(wsapp, message):
10+
print("Got a ping! A pong reply has already been automatically sent.")
11+
12+
def on_pong(wsapp, message):
13+
print("Got a pong! No need to respond")
14+
15+
16+
def on_error(wsapp, message):
17+
print(f"Got error: {message}")
18+
19+
20+
#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)
21+
22+
#wsapp = websocket.WebSocketApp("wss://echo.websocket.events", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
23+
24+
wsapp = websocket.WebSocketApp("wss://relay.damus.io", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
25+
26+
#wsapp = websocket.WebSocketApp("wss://relay.primal.net", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
27+
28+
29+
def stress_test_thread():
30+
print("before run_forever")
31+
#wsapp.run_forever(ping_interval=30, ping_timeout=10)
32+
#wsapp.run_forever(ping_interval=300, ping_timeout=10, ping_payload="This is an optional ping payload")
33+
wsapp.run_forever()
34+
print("after run_forever")
35+
36+
_thread.stack_size(32*1024)
37+
_thread.start_new_thread(stress_test_thread, ())
38+
39+
time.sleep(5)
40+
print("sending it")
41+
# nothing:
42+
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]')
43+
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1] }]')
44+
# this worked at some point:
45+
#wsapp.send_text('["REQ","index3",{"kinds":[9735]}]')
46+
#wsapp.send_text('["REQ","index3",{"kinds":[9735], "since": 1745086888}]')
47+
tosend = '["REQ","index3",{"kinds":[9735], "since": '
48+
tosend += str(round(time.time()-1000))
49+
tosend += '}]'
50+
print(f"sending: {tosend}")
51+
wsapp.send_text(tosend)
52+
#1745086888
53+
#["REQ","index",{"kinds":[9735]}]
54+
55+
56+
print("waiting 30 seconds...")
57+
time.sleep(30)
58+
#print("sending again")
59+
#wsapp.send_text('again')
60+
61+
62+
time.sleep(25)
63+
#print("sending more")
64+
#wsapp.send_text('more')
65+
66+
wsapp.close()
67+
68+

0 commit comments

Comments
 (0)