websockethandler.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:django-tornado-websockets 作者: Kocal 项目源码 文件源码
def on_message(self, message):
        """
            Handle incoming messages on the WebSocket.

            :param message: JSON string
            :type message: str
        """

        try:
            message = tornado.escape.json_decode(message)
            event = message.get('event')
            data = message.get('data')
        except ValueError:
            self.emit_warning('Invalid JSON was sent.')
            return

        if not event:
            self.emit_warning('There is no event in this JSON.')
            return

        if not self.websocket.events.get(event):
            return

        if not data:
            data = {}
        elif not isinstance(data, dict):
            self.emit_warning('The data should be a dictionary.')
            return

        callback = self.websocket.events.get(event)
        spec = inspect.getargspec(callback)
        kwargs = {}

        if 'self' in spec.args:
            kwargs['self'] = self.websocket.context
        if 'socket' in spec.args:
            kwargs['socket'] = self
        if 'data' in spec.args:
            kwargs['data'] = data

        return callback(**kwargs)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号