tornado---tornado中websocket聊天:

tornado中websocket聊天:

后端:

# websocket聊天
from tornado.websocket import WebSocketHandler


class HomeChatHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render("home.html")


class ChatHandler(WebSocketHandler):
    users = []

    # 当websocket打开时调用
    def open(self):
        print("##########")
        self.users.append(self)
        # print(self.users)
        for user in self.users:
            # print(user)
            # print(self.request.remote_ip)
            # 给客户端发消息
            user.write_message("[%s]登录了!!!" % (self.request.remote_ip))

    # 当客户端发送消息调用
    def on_message(self, message):
        for user in self.users:
            # print(user)
            # print(self.request.remote_ip)
            # 给客户端发消息
            user.write_message(u"[%s]说了:%s" % (self.request.remote_ip, message))

    # 当websocket关闭时调用
    def on_close(self):
        self.users.remove(self)
        for user in self.users:
            # print(user)
            # print(self.request.remote_ip)
            # 给客户端发消息
            user.write_message(u"[%s]退出了!!!" % (self.request.remote_ip))

    # # 判断源origin,对于符合条件的允许源连接
    # def check_origin(self, origin):
    #     pass
    # 关闭websocket
    # def clear(self):
    #     pass

前端:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>聊天界面</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-3.3.1.min.js" charset="UTF-8"></script>
</head>
<body>
<div id="contents" style="width: 500px;height: 500px;overflow: auto">

</div>
<div>
    <input type="text" id="message">
    <button onclick="sendMessage()">发送</button>
</div>

</body>
<script>
    //建立websocket连接
    var ws = new WebSocket("ws://192.168.0.155:11121/chat")
    #接受服务器的消息
    ws.onmessage = function (e) {

        $("#contents").append("<p>" + e.data + "</p>")


    }
    #向服务器发消息

    function sendMessage() {
        var message = $("#message").val()
        ws.send(message)
        $("#message").val("")

    }
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tornado是一个Python的Web框架,它支持异步编程和非阻塞IO操作。TornadoWebSocket是一种实现了全双工通信的协议,它允许服务器和客户端之间进行实时的双向通信。 在Tornado使用WebSocket,你可以通过继承tornado.websocket.WebSocketHandler类来创建一个WebSocket处理器。WebSocketHandler提供了一些方法来处理WebSocket连接的不同事件,例如连接建立、消息接收和连接关闭等。 以下是使用TornadoWebSocket的一般步骤: 1. 创建一个WebSocket处理器类,继承自tornado.websocket.WebSocketHandler。 2. 在处理器类实现on_message()方法,用于处理接收到的消息。 3. 在处理器类实现open()方法,用于处理WebSocket连接建立时的操作。 4. 在处理器类实现on_close()方法,用于处理WebSocket连接关闭时的操作。 5. 在Tornado应用程序定义路由,将URL映射到WebSocket处理器类。 6. 启动Tornado应用程序。 下面是一个简单的示例代码,演示了如何在Tornado使用WebSocket: ```python import tornado.websocket import tornado.web import tornado.ioloop class WebSocketHandler(tornado.websocket.WebSocketHandler): def open(self): print("WebSocket连接建立") def on_message(self, message): print("接收到消息:", message) self.write_message("服务器已收到消息:" + message) def on_close(self): print("WebSocket连接关闭") app = tornado.web.Application([ (r"/websocket", WebSocketHandler), ]) if __name__ == "__main__": app.listen(8888) tornado.ioloop.IOLoop.current().start() ``` 在上面的示例,我们创建了一个WebSocket处理器类WebSocketHandler,并实现了open()、on_message()和on_close()方法来处理不同的事件。在应用程序,我们将URL "/websocket" 映射到WebSocketHandler类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值