相关文章推荐
彷徨的仙人掌  ·  Java ...·  4 周前    · 
暴走的小熊猫  ·  postgresql pivot - CSDN文库·  2 月前    · 
沉稳的紫菜汤  ·  Flink ...·  4 月前    · 
焦虑的针织衫  ·  is not json ...·  1 年前    · 
绅士的石榴  ·  javascript - Electron ...·  1 年前    · 
age = dicts['age'] await ws.send_str('[%s]:%s 你好'%(name,age)) print('dicts:',type(dicts),dicts) elif msg.type == aiohttp.WSMsgType.ERROR: print('ws connection closed with exception %s' % ws.exception()) # 断开连接了 print('websocket connection closed') return ws if __name__ == '__main__': app = web.Application() app.add_routes([web.get('/', hello)]) app.add_routes([web.get('/ws', websocket_handler)]) web.run_app(app,host='127.0.0.1',port=8900)

代码中注意中文问题:

2)再写个客户端test_aiohttp_WSClient.py用于测试

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
' a test aiohttp Websocket Client '
__author__ = 'TianJiang Gui'
import aiohttp
from aiohttp import web
import asyncio
import json
async def callback(msg):
    print('callback:',msg)
async def websocket(session,url):
    params = {'name': '桂天江', 'age': '33'}
    async with session.ws_connect(url) as ws:
        #---gtj 一定注意中文发送前要采用ensure_ascii=False
        jsondata=json.dumps(params,ensure_ascii=False)
        print('send jsondata:',type(jsondata),jsondata,type(params),params)
        await ws.send_json(jsondata)
        async for msg in ws:
            if msg.type == aiohttp.WSMsgType.TEXT:
                await callback(msg.data)
            elif msg.type == aiohttp.WSMsgType.CLOSED:
                break
            elif msg.type == aiohttp.WSMsgType.ERROR:
                break
        await ws.close()
async def main(app):
    session = aiohttp.ClientSession()
    await websocket(session,'http://127.0.0.1:8900/ws')
if __name__ == '__main__':
    app = web.Application()
    asyncio.run(main(app))

 此处要注意中文发送前的转换

最后看看运行结果吧:

最后总结:希望此文能帮到正在苦于寻找没有完整的客户端/服务端案例的你

其他前置基础文章请参见:

python小技巧大应用--用aiohttp实现HTTP C/S收发JSON数据

python小技巧大应用--用aiohttp实现HTTP C/S应用小测试

写文不易,请多关注,点赞

SockJS企业版 作为Tidelift订阅的一部分提供。 SockJS的维护者以及数以千计的其他软件包正在与Tidelift一起使用,以为用于构建应用程序的开源依赖项提供商业支持和维护。 节省时间,降低风险并改善代码运行状况,同时向维护人员支付所使用的确切依赖项。 SockJS家族 JavaScript客户端库 Node.js服务器 Erlang服务器 Python /龙卷风服务器 Java / vert.x服务器 工作正在进行中: 用于Rust的 :warning: 注意这是预发行的文档。 最新稳定版本的文档位于: : :warning: 什么是SockJS?
1.什么是websocket 对于传统的web开发而言,是前台发送请求,后端接口返回对应的数据。但是在爬虫网页项目中当用户在页面上发送爬取请求之后,这个时候如果是传统的ajax请求,则前台就会阻塞,并且我们需要后台实时的通知用户现在爬虫的爬取进度。为了完成这一系列的交互功能,我们就需要使用websocketwebsocket本质上就是一种协议,这种协议可以允许服务端主动给客户端客户端推送数据,在与vue相结合之后可以实现实时的数据刷新与展示效果。 2.如何在aiohttp中使用websocket 一个客户端库,带有用于浏览器和Node.js的基于的API。 import WebSocketAsPromised from 'websocket-as-promised' ; const wsp = new WebSocketAsPromised ( 'ws://example.com' ) ; await wsp . open ( ) ; wsp . send ( 'message' ) ; await wsp . close ( ) ; 全球Promise构造函数 npm i websocket-as-promised --save
码头工人网络创建后端docker run -d --name postgres --network后端chaowenguo / postgres docker run -d --name redis-网络后端redis docker run -d --name web --network后端chaowenguo / aiohttp docker run -d --name chat --network后端chaowenguo / chat:aiohttp docker run -d --name nginx --network backend -p 443:443 -v /etc/letsencrypt/archive/chaowenguo.eu.org:/encrypt:ro chaowenguo / nginx 回购public_repo 管理员创建项目开发人员添加数据库Post
为了让数据的传输更加稳定,采取的策略是用Python当作websocket服务器C#端当作客户端来进行。 C# 上需要安装上WebSocketSharp插件 // See https://aka.ms/new-console-template for more information using System; using WebSocketSharp; using System.Text.Json; namespace WebSocket_Demo class Program 2. 客户端连接成功后,服务器端会创建一个WebSocket会话对象,可以通过该对象向客户端发送消息。 3. 在Java中,可以使用JSON库来生成和解析JSON数据。例如,使用Gson库可以将Java对象转换为JSON字符串,或将JSON字符串转换为Java对象。 4. 在服务器端,可以使用WebSocket会话对象的getBasicRemote()方法获取一个RemoteEndpoint.Basic对象,通过该对象可以向客户端发送消息。 5. 在客户端,可以使用JavaScript的WebSocket API来连接WebSocket服务器,并通过WebSocket对象的send()方法发送消息。接收到消息后,可以通过WebSocket对象的onmessage()方法处理消息。 下面是一个简单的Java WebSocket示例,演示如何发送JSON数据: ```java import com.google.gson.Gson; import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.util.HashMap; import java.util.Map; @ServerEndpoint("/websocket") public class WebSocketServer { private static Map<Session, String> clients = new HashMap<>(); @OnOpen public void onOpen(Session session) { System.out.println("WebSocket opened: " + session.getId()); clients.put(session, ""); @OnMessage public void onMessage(String message, Session session) { System.out.println("WebSocket message received: " + message); Gson gson = new Gson(); Message msg = gson.fromJson(message, Message.class); clients.put(session, msg.getUsername()); broadcast(gson.toJson(msg)); @OnClose public void onClose(Session session) { System.out.println("WebSocket closed: " + session.getId()); clients.remove(session); @OnError public void onError(Throwable error) { System.out.println("WebSocket error: " + error.getMessage()); private void broadcast(String message) { for (Session session : clients.keySet()) { try { session.getBasicRemote().sendText(message); } catch (IOException e) { e.printStackTrace(); private static class Message { private String username; private String content; public String getUsername() { return username; public void setUsername(String username) { this.username = username; public String getContent() { return content; public void setContent(String content) { this.content = content; 在上面的示例中,我们定义了一个WebSocket服务器端,监听"/websocket"路径的连接请求。当客户端连接成功后,服务器端会创建一个WebSocket会话对象,并将其保存到clients集合中。当客户端发送消息时,服务器端会将消息解析为一个Message对象,并将其转换为JSON字符串,然后通过WebSocket会话对象的getBasicRemote()方法向所有客户端发送消息。当客户端断开连接时,服务器端会将其从clients集合中移除。 在客户端,可以使用以下代码连接WebSocket服务器,并发送JSON数据: ```javascript var socket = new WebSocket("ws://localhost:808/websocket"); socket.onopen = function(event) { console.log("WebSocket opened"); socket.onmessage = function(event) { console.log("WebSocket message received: " + event.data); var msg = JSON.parse(event.data); // 处理接收到的消息 socket.onclose = function(event) { console.log("WebSocket closed"); socket.onerror = function(event) { console.log("WebSocket error: " + event.message); function sendMessage(username, content) { var msg = { username: username, content: content socket.send(JSON.stringify(msg)); 在上面的代码中,我们使用WebSocket API连接WebSocket服务器,并定义了四个事件处理函数:onopen、onmessage、onclose和onerror。当WebSocket连接成功时,会调用onopen函数;当接收到消息时,会调用onmessage函数;当WebSocket连接关闭时,会调用onclose函数;当WebSocket发生错误时,会调用onerror函数。我们还定义了一个sendMessage函数,用于向服务器发送JSON数据。在接收到消息时,我们可以通过JSON.parse()方法将JSON字符串解析为JavaScript对象,然后进行处理。 希望这个示例能够帮助你实现Java WebSocket发送JSON数据,并在前端JavaScript接收JSON数据的功能。