python socket推送消息到客户端

本文介绍了一种使用Python的socket编程在TCP/IP基础上,通过服务端两个端口连接客户端和触发端,实现实时消息推送的方法。服务端开启7890和9999端口,客户端连接7890并等待消息,触发端通过9999端口发送通知,服务端利用多线程和RequestManager类管理客户端连接并广播消息。
摘要由CSDN通过智能技术生成

背景

由于目前项目中没有使用到浏览器,所以从服务端推送消息到客户的重任到了tcp上,本博客讲了如何用python的socket编程实现服务端到客户端的消息推送。

思路

服务端开两个端口7890和9999,7890负责连接客户端,9999负责连接触发端,客户端连接上后挂起等待消息,触发端触发后向所有连接的客户端发送消息。

客户端

连接服务端的7890端口,并且用循环接收和打印服务端推送的数据。客户端代码如下:

from socket import *
import time

def main():
    tcp_client_socket = socket(AF_INET, SOCK_STREAM)
    server_ip = "127.0.0.1"
    server_port = 7890
    tcp_client_socket.connect((server_ip, server_port))
    msg = "hello sever!"
    start_time = time.time()
    tcp_client_socket.send(msg.encode("utf-8"))
    while True: # 死循环接受服务端推送的信息
        recv_data = tcp_client_socket.recv(1024)
        print("接收数据:", recv_data.decode("utf-8"))
        print("花费时间:{}s".format(time.time()-start_time))
        # 关闭套接字
    tcp_client_socket.close()


if __name__ == "__main__":
    main()

触发端

用于通知服务端对所有的客户端进行消息的通知,代码与客户端类似,如下:

from socket import *
import time

def main():
    tcp_client_socket = s
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Python WebSocket实时消息推送,你可以使用Tornado或Flask等Web框架,并结合WebSocket协议库(如Tornado的WebSocketHandler或Flask-SocketIO)实现。 以下是一个使用Flask-SocketIO实现实时消息推送的示例代码: 1. 安装Flask-SocketIO库: ```bash pip install flask-socketio ``` 2. 创建Flask应用程序并初始化SocketIO: ```python from flask import Flask, render_template from flask_socketio import SocketIO app = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' socketio = SocketIO(app) ``` 3. 定义WebSocket事件处理器: ```python @socketio.on('connect') def handle_connect(): print('Client connected') @socketio.on('message') def handle_message(msg): print('Received message: ' + msg) # 将消息广播给所有客户端 socketio.emit('message', msg) @socketio.on('disconnect') def handle_disconnect(): print('Client disconnected') ``` 4. 在HTML模板中添加WebSocket客户端代码: ```html <!DOCTYPE html> <html> <head> <title>WebSocket Test</title> </head> <body> <h1>WebSocket Test</h1> <input type="text" id="message-input"> <button id="send-button">Send</button> <script src="//code.jquery.com/jquery-1.11.3.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script> <script> var socket = io.connect(); socket.on('connect', function() { console.log('Connected to server'); }); socket.on('message', function(msg) { console.log('Received message: ' + msg); // 在页面上显示收到的消息 $('#message-list').append($('<li>').text(msg)); }); $('#send-button').click(function() { var msg = $('#message-input').val(); socket.send(msg); }); </script> </body> </html> ``` 5. 运行应用程序并访问网页: ```python if __name__ == '__main__': socketio.run(app) ``` 以上是一个基本的WebSocket实时消息推送示例,你可以根据自己的需求进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值