跟着ChatGPT手把实现一个websocket连接管理器! 毛骨悚然

全是贴图了:

多说无益!!!

开始:

实现一个某安的连接管理:

其中步骤1到7列的明明白白,而且一开始就提出了要有connectionManager,这已经是很职业的方式了,至少不是学生气:

9c128422a2cb437596a7daa1304ef0eb.png

这些肯定不够啊,要给我写代码来看看:

默认是python代码,风格良好。

887b406dca4e7d7f2f188ae695204c54.png

不要用Python,我想用Java

从思路到代码,给安排的明明白白:

0a91088a19de01064c9bd6069bcd4a1c.png

得寸进尺,要求用websocket !

97193cfeea02de390ebfd7fb752aedde.png

进一步去问,ping/pong的实现机理:

这里直接用了中间的ping/pong ,而websocket这个关键词是从上文中带下来 的,这个回答,即说明了ping/pong的原理,也说清楚了实现方式:

22f1c4f55ba2a044dfe2944138a17c92.png

这已经很是为难人了。。本拐不死心,继续追,关于稳定性:

问稳定性,已经是中级以上工程师的问题了,回答的处理异常和重连,中规中矩,但对于AI,知足吧!!! 

841e809e938c142ecda0123f6f28ac6e.png

再接着无赖,关于主备地址:

灾备情况,这个事儿其实已经超纲了,即使在工作中,这一层也不应该由应用层的人员来思考。

381927ab38c05e13ea417fa44d28656d.png

保持连接:

45bc0869250630b301286cc6b5c69aa5.png

最终AI的代码如下:

public class WebSocketConnectionManager {private static WebSocketConnectionManager instance;private static String primaryAddress;private static String secondaryAddress;private static WebSocketClient client;private static WebSocketContainer container;private static Session session;public static WebSocketConnectionManager getInstance() {if (instance == null) {instance = new WebSocketConnectionManager();}return instance;}public void init(String primaryAddress, String secondaryAddress) {this.primaryAddress = primaryAddress;this.secondaryAddress = secondaryAddress;this.client = new WebSocketClient();this.container = ContainerProvider.getWebSocketContainer();}public boolean checkConnection() {return session != null && session.isOpen();}public void createConnection(String address) {try {URI uri = URI.create(address);client.start();session = container.connectToServer(this, uri);} catch (Exception e) {e.printStackTrace();}}public void changeAddress(String primaryAddress, String secondaryAddress) {if (session == null || !session.isOpen()) {createConnection(primaryAddress);} else if (session.getRequestURI().getHost().equals(primaryAddress)) {createConnection(secondaryAddress);} else {createConnection(primaryAddress);}}public void startHeartbeat(long interval, long timeout) {session.setMaxIdleTimeout(timeout);ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();executor.scheduleAtFixedRate(() -> {if (session.isOpen()) {session.getAsyncRemote().sendPing(null);}}, interval, interval, TimeUnit.MILLISECONDS);}@OnPongpublic void onPong(PongMessage message) {// 处理pong消息}public void reconnect(int retries, long interval, Runnable callback) {ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();executor.scheduleAtFixedRate(() -> {if (checkConnection()) {executor.shutdown();callback.run();}createConnection(primaryAddress);retries--;if (retries == 0) {executor.shutdown();callback.run();}}, 0, interval, TimeUnit.MILLISECONDS);}public void keepConnection(String primaryAddress, String secondaryAddress) {reconnect(3, 1000, () -> {if (checkConnection()) {return;}changeAddress(primaryAddress, secondaryAddress);});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16959.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023 商业化ChatGpt Web源码

简介 一款使用React搭建的一款可商业化的ChatGpt Web应用,支持接入支付宝当面付及易支付 主要功能 后台管理系统,可对用户,Token,商品,卡密等进行管理精心设计的 UI,响应式设计极快的首屏加载速度(~100kb)支持Midjourney绘画和DALLE模型绘…

基于ChatGPT的文档知识库客服系统-支持上传网址/文本/docx等数据

现在,很多公司都有自己的内容知识库,会产生大量的碎片话的内部知识,但是这样内部知识难以整合搜索。 我开发的文档知识库客服系统 gofly.v1kf.com ,可以应用于企业内部知识库管理,用户可以使用自然语言提问&#xff0c…

学编程一定要数学很好吗?看到网友这样说,我松了一口气 ...

学好数理化,走遍全天下!小时候,这句顺口溜时常在耳边响起,而迈入编程行业以后,又有人想问:我数学不好,能写好代码吗? 不过最近的 MIT 神经科学家在 eLife期刊发表了一项新研究&#…

答读者:数学不好,能学好算法吗?

点击关注上方“五分钟学算法”, 设为“置顶或星标”,第一时间送达干货。 转自是不是很酷 这是在我的知识星球上,一个同学问我的问题。 波波老师您好。 我今年 28 了,也算是科班出身,但是大学的时候基本没怎么上过课。毕…

5小时掌握提示词工程,写出高价值大模型Prompt!中文!免费!

写出优质的提示词,让AI生成惊艳的图文作品。 ——这就是如今年薪百万仍一人难求的提示词工程师们在解决的问题。大语言模型时代下,不断涌现出众多让人瞳孔地震的绘画、拍案叫绝的文案,它们的创作者并非传统定义的画家、作家,而是这…

大模型部署的方案

借着热点,简单聊聊大模型的部署方案,作为一个只搞过CV部署的算法工程师,在最近LLM逐渐改变生活的大背景下,猛然意识到LLM部署也是很重要的。大模型很火,而且确实有用(很多垂类场景可以针对去训练&#xff0…

大大大模型部署方案抛砖引玉

作者 | Oldpan 编辑 | oldpan博客 点击下方卡片,关注“自动驾驶之心”公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心【模型部署】技术交流群 借着热点,简单聊聊大模型的部署方案,作为一个只搞过CV部署的算法工程师&#…

为什么很多企业把35岁视为分水岭

(点击即可收听) 为什么很多企业把35岁视为分水岭 有时候,别人的故事,若干年后,就是自己的故事,只要身在互联网这个行业里,可以说,每个人都避免不了35岁危机 不要五十步笑百步 前阵子,朋友圈一位行业知名大佬,35岁,每天兢兢业业,任劳任怨,本以为安稳渡过3个月试用期,正快要转正时…

AI冲击人工:资深翻译3年前就接受了可能到来的失业,原画师被取代后又出现了“AI概念师”...

九派新闻AI会取代我们吗? 高盛公司最新一份研究报告指出,ChatGPT等AI领域出现突破后,全球预计将有3亿个工作岗位被生成式AI取代。OpenAI近日发表论文称,如果一项工作使用AI能减少50%以上的时间,那么它就是可替代的。其…

项目完成小结:使用Blazor和gRPC开发大模型客户端

先介绍下这个项目。 最近我一直在探索大语言模型,根据不同场景训练了好几个模型,为了让用户测试使用,需要开发前端。 这时候,用 Gradio 搭建的前端是不太够的,虽说 GitHub 上也有一堆开源的 ChatGPT 前端&#xff0c…

Mac 上的搜狗输入法卡顿问题

我的 Mac 使用的中文输入法是搜狗拼音输入法,一直有一个问题,就是 Mac 开机太久,输入法会出现卡顿问题,按下按键 0.5s 后需才会显示对应的汉字,用着非常难受,以前这种情况我都是通过重启 Mac 来解决&#x…

大语言模型将如何影响软件开发?

当人人具备编写代码的能力之后,这将会给软件生产和分配带来哪些结构性的变化? 原文链接:https://www.geoffreylitt.com/2023/03/25/llm-end-user-programming.html 未经授权,禁止转载! 作者 | Geoffrey Litt 译者 | 弯…

提示词工程让儿童编程轻而易举

编写长长的代码时常令人头疼。尤其是小朋友,打字不快,但想象力丰富。 现在借助chatgpt。 一切变得超级简单。 1. https://github.com/roocell/gptCozmo 2. https://github.com/Bhood23/CozmoGPT while True:from pyChatGPT import ChatGPTimport speec…

【软件简史】怎样理解 Alan Kay 曾在1984 年写道:“我们希望像以前编辑文档一样编辑我们的工具” 这句话 —— LLM 将如何影响软件的创建?

近段时间,大语言模型(LLM)掀起了一股狂潮。 OpenAI 发布的 GPT-4 模型在包括编程在内的各个功能上都取得了令人瞩目的进步。微软研究院发布了一篇论文,展示了 GPT-4 能够在没有太多提示的情况下生成非常复杂的代码,如 3D 视频游戏。与此同时,OpenAI 还发布了 ChatGPT 插…

宇宙即计算~一种新科学:斯蒂芬·沃尔夫勒姆

斯蒂芬沃尔夫勒姆这个名字,在中文世界里可能远谈不上家喻户晓;但他的英文名Stephen Wolfram恐怕反而却要熟悉得多。 他是Mathematica软件的发明者和首席设计师,被广泛地认为是当今科学和计算技术中最重要的革新者之一。 大名鼎鼎的数学软件Ma…

02.GLM-130B

文章目录 前言泛读相关知识GPTBERTT5小结 背景介绍主要贡献和创新点GLM 6B 精读自定义Mask模型量化1TB 的中英双语指令微调RLHFPEFT训练策略 实验分析与讨论模型参数六个指标其他测评结果 代码复现(6B)环境准备运行调用代码调用网页服务命令行调用 模型微…

2023 CCF-百度松果基金正式启动申报!大语言模型、AIGC等热点课题首次公布

5 月 31 日,2023 年 CCF-百度松果基金(简称“松果基金”)正式启动申报,面向全球高校及科研院所青年学者开放,入选项目将获得松果基金百万课题基金及千万级支持与服务。申报截至 2023 年 7 月 10 日。 本届松果基金共设…

聊天尬死名场面,你遇到过吗?教你一键获取斗图表情包,晋升聊天达人

大家好呀,我是辣条。 写这篇文章的灵感来源于之前和朋友的聊天,真的无力吐槽了,想发适合的表情包怼回去却发现收藏的表情包就那几个,就想着是不是可以爬取一些表情包,再也不用尬聊了。 先给大家看看我遇到的聊天最尬…

国内使用bing国际版(非国内国际切换版本)

最近百度的广告越来越猖狂了,拦也拦不住,惹不起我还躲不起吗? 但是用bing搜素,国内版的广告也不少,www.bing.com还会被强制解析为cn.bing.com,所以要修改host,直接解析到global.bing.com上 这…