Example #1
0
class LsWsServerProtocol(WebSocketServerProtocol):
    def __init__(self):
        super().__init__()
        self.tally = 0
        self.screen_ui = self.server.screen_ui
        self.web_eink_ui = self.server.web_eink_ui
        self.jukebox = self.server.jukebox
        self.audio_player = AudioPlayer()

    ###########################################################################

    def onConnect(self, request):
        log("Client connecting: {0}".format(request.peer))

    def onOpen(self):
        log("WebSocket connection open.")
        next_song = self.jukebox.browse_next_song()
        self.web_eink_ui.generate_bytes_defer(next_song,
                                              self.screen_generated_cb)

    def onMessage(self, payload, isBinary):
        if isBinary:
            log("Binary message received: {0} bytes".format(len(payload)))
            log("Binary message received: %s" % payload.hex())
        else:
            log("Text message received: {0}".format(payload.decode('utf8')))

        self.tally += 1
        self.screen_ui.update_info({"ws_tally": self.tally})
        log("payload: %s" % payload)
        self.audio_player.play_sound_effect('button')

        next_song = self.jukebox.browse_next_song()
        log(next_song)
        self.web_eink_ui.generate_bytes_defer(next_song,
                                              self.screen_generated_cb)

    def screen_generated_cb(self, display_bytes):
        self.sendMessage(display_bytes, True)

    def onClose(self, wasClean, code, reason):
        log("WebSocket connection closed: {0}".format(reason))