while True: wlist = [] if cqueue or c_pend: wlist.append(self.request) ins, outs, excepts = select.select(rlist, wlist, [], 1) if excepts: raise Exception("Socket exception") if self.request in outs: # Send queued target data to the client c_pend = self.send_frames(cqueue) cqueue = [] if self.request in ins: # Receive client data, decode it, and send it back frames, closed = self.recv_frames() print("Received: " + frames[0].decode('utf-8')) sendUDP("localhost", 4242, frames[0].decode('utf-8')) if closed: self.send_close() if __name__ == '__main__': opts = {"listen_port": 80, "web": "."} try: server = WebSocketServer(WebSocketEcho, **opts) server.start_server() except: pass
#!/usr/bin/env python import asyncore from websocket import WebSocketServer class BroadcastHandler(object): """ The BroadcastHandler repeats incoming strings to every connected WebSocket. """ def __init__(self, conn): self.conn = conn def dispatch(self, data): for session in self.conn.server.sessions: session.send(data) if __name__ == "__main__": print "Starting WebSocket broadcast server - ws://localhost:8181/broadcast" WebSocketServer(port=8181, handlers={"/broadcast": BroadcastHandler}) asyncore.loop()