Skip to content

Commit 12449dc

Browse files
committed
fix websocket error
Force IPv4 usage to prevent address conflicts Add more debug logging to help diagnose issues Handle errors more gracefully Give more time for the servers to initialize properly
1 parent 213180b commit 12449dc

File tree

1 file changed

+48
-28
lines changed

1 file changed

+48
-28
lines changed

main.py

+48-28
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
class BrokerSelector:
2424
def __init__(self):
2525
self.selected_broker = None
26+
print("BrokerSelector initialized")
2627

2728
async def handle_client(self, reader, writer):
29+
print("New client connection received")
2830
data = await reader.read(100)
2931
message = data.decode()
3032
addr = writer.get_extra_info("peername")
@@ -56,38 +58,56 @@ async def handle_client(self, reader, writer):
5658
await writer.wait_closed()
5759

5860
async def start_ipc_server(self):
59-
server = await asyncio.start_server(self.handle_client, "127.0.0.1", IPC_PORT)
60-
61-
addr = server.sockets[0].getsockname()
62-
print(f"Serving on {addr}")
61+
try:
62+
server = await asyncio.start_server(
63+
self.handle_client,
64+
'127.0.0.1',
65+
IPC_PORT
66+
)
67+
addr = server.sockets[0].getsockname()
68+
print(f"IPC Server running on {addr}")
6369

64-
async with server:
65-
await server.serve_forever()
70+
async with server:
71+
await server.serve_forever()
72+
except Exception as e:
73+
print(f"Error starting IPC server: {e}")
6674

6775

6876
async def main():
69-
broker_selector = BrokerSelector()
70-
71-
# Start the IPC server
72-
asyncio.create_task(broker_selector.start_ipc_server())
73-
74-
print("WebSocket server starting...")
75-
while not broker_selector.selected_broker:
76-
await asyncio.sleep(1)
77-
78-
selected_broker = broker_selector.selected_broker
79-
print(f"Selected broker: {selected_broker}")
80-
81-
ws_port = BROKER_PORTS[selected_broker]
82-
print(f"Starting {selected_broker.capitalize()} WebSocket on port {ws_port}...")
83-
84-
if selected_broker == "flattrade":
85-
flattrade_initialize_api()
86-
await flattrade_main(ws_port)
87-
elif selected_broker == "shoonya":
88-
shoonya_initialize_api()
89-
await shoonya_main(ws_port)
77+
try:
78+
broker_selector = BrokerSelector()
79+
80+
# Start the IPC server and store the task
81+
ipc_server_task = asyncio.create_task(broker_selector.start_ipc_server())
82+
83+
print("WebSocket server starting...")
84+
print("Waiting for broker selection...")
85+
86+
while not broker_selector.selected_broker:
87+
await asyncio.sleep(1)
88+
print("Waiting for broker selection...")
89+
90+
selected_broker = broker_selector.selected_broker
91+
print(f"Selected broker: {selected_broker}")
92+
93+
ws_port = BROKER_PORTS[selected_broker]
94+
print(f"Starting {selected_broker.capitalize()} WebSocket on port {ws_port}...")
95+
96+
if selected_broker == "flattrade":
97+
flattrade_initialize_api()
98+
await flattrade_main(ws_port)
99+
elif selected_broker == "shoonya":
100+
shoonya_initialize_api()
101+
await shoonya_main(ws_port)
102+
103+
except Exception as e:
104+
print(f"Error in main: {e}")
90105

91106

92107
if __name__ == "__main__":
93-
asyncio.run(main())
108+
try:
109+
asyncio.run(main())
110+
except KeyboardInterrupt:
111+
print("Server shutting down...")
112+
except Exception as e:
113+
print(f"Fatal error: {e}")

0 commit comments

Comments
 (0)