MCPcopy
hub / github.com/HelloZeroNet/ZeroNet / start

Method start

src/Ui/UiWebsocket.py:42–88  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

40
41 # Start listener loop
42 def start(self):
43 ws = self.ws
44 if self.site.address == config.homepage and not self.site.page_requested:
45 # Add open fileserver port message or closed port error to homepage at first request after start
46 self.site.page_requested = True # Dont add connection notification anymore
47 import main
48 file_server = main.file_server
49 if not file_server.port_opened or file_server.tor_manager.start_onions is None:
50 self.site.page_requested = False # Not ready yet, check next time
51 else:
52 try:
53 self.addHomepageNotifications()
54 except Exception as err:
55 self.log.error("Uncaught Exception: " + Debug.formatException(err))
56
57 for notification in self.site.notifications: # Send pending notification messages
58 # send via WebSocket
59 self.cmd("notification", notification)
60 # just in case, log them to terminal
61 if notification[0] == "error":
62 self.log.error("\n*** %s\n" % self.dedent(notification[1]))
63
64 self.site.notifications = []
65
66 while True:
67 try:
68 if ws.closed:
69 break
70 else:
71 message = ws.receive()
72 except Exception as err:
73 self.log.error("WebSocket receive error: %s" % Debug.formatException(err))
74 break
75
76 if message:
77 try:
78 req = json.loads(message)
79 self.handleRequest(req)
80 except Exception as err:
81 if config.debug: # Allow websocket errors to appear on /Debug
82 import main
83 main.DebugHook.handleError()
84 self.log.error("WebSocket handleRequest error: %s \n %s" % (Debug.formatException(err), message))
85 if not self.hasPlugin("Multiuser"):
86 self.cmd("error", "Internal error: %s" % Debug.formatException(err, "html"))
87
88 self.onClosed()
89
90 def onClosed(self):
91 pass

Callers 1

actionWebsocketMethod · 0.95

Calls 7

cmdMethod · 0.95
dedentMethod · 0.95
handleRequestMethod · 0.95
hasPluginMethod · 0.95
onClosedMethod · 0.95
errorMethod · 0.80

Tested by

no test coverage detected