当前位置: 首页 > news >正文

godot使用ws

go服务端

package mainimport ("encoding/json""fmt""github.com/gorilla/websocket""net/http"
)var upgrader = websocket.Upgrader{ReadBufferSize:  1024,WriteBufferSize: 1024,
}// 处理函数
func handleWebSocket(w http.ResponseWriter, r *http.Request) {// 使用 upgrader 将 HTTP 连接升级为 WebSocket 连接conn, err := upgrader.Upgrade(w, r, nil)if err != nil {fmt.Println("Upgrade:", err)return}defer conn.Close()for {// 读取客户端发送的消息messageType, message, err := conn.ReadMessage()if err != nil {fmt.Println("Read:", err)break}fmt.Printf("Received: %s\n", message)// 将消息回发给客户端m := map[string]string{}m["message"] = "hello"marshal, err := json.Marshal(m)if err != nil {return}err = conn.WriteMessage(messageType, marshal)if err != nil {fmt.Println("Write:", err)break}}
}func main() {http.HandleFunc("/ws", handleWebSocket)fmt.Println("Listening on :11111...")err := http.ListenAndServe(":11111", nil)if err != nil {panic(err)}
}

godot 客户端

extends Nodevar socket = WebSocketPeer.new()func _ready():socket.connect_to_url("ws://localhost:11111/ws")print("conn ws")socket.send_text("hello")func _process(delta):socket.poll()var state = socket.get_ready_state()if state == WebSocketPeer.STATE_OPEN:socket.send_text("godot hello")while socket.get_available_packet_count():var json_string = socket.get_packet().get_string_from_utf8()print("数据包:", json_string)#var dict = JSON.parse_string(json_string)# 创建 JSON 解析器实例#var json_parser = JSON.new()# 解析 JSON 字符串到字典#var dict = json_parser.parse(json_string)#print("dict ", dict)#if dict != null:#print(dict)#Dictionary result =(Dictionary)json.Parse(json_string).Result;#print(result["message"]);if json_string == "":continueelse :print(json_string)var json = JSON.new()var data = json.parse_string(json_string)if data != null:print(" get message : " , data["message"])pass#var data_received = json.data#print("data_received : ",data_received)else:print("JSON Parse Error: ", json.get_error_message(), " in ", json_string, " at line ", json.get_error_line())elif state == WebSocketPeer.STATE_CLOSING:# 继续轮询才能正确关闭。passelif state == WebSocketPeer.STATE_CLOSED:var code = socket.get_close_code()var reason = socket.get_close_reason()print("WebSocket 已关闭,代码:%d,原因 %s。干净得体:%s" % [code, reason, code != -1])set_process(false) # 停止处理。

相关文章:

godot使用ws

go服务端 package mainimport ("encoding/json""fmt""github.com/gorilla/websocket""net/http" )var upgrader websocket.Upgrader{ReadBufferSize: 1024,WriteBufferSize: 1024, }// 处理函数 func handleWebSocket(w http.Respo…...

Windows FFmpeg 开发环境搭建

FFmpeg 开发环境搭建 FFmpeg命令行环境搭建使用FFmpeg官方编译的库Windows编译FFmpeg1. 下载[msys2](https://www.msys2.org/#installation)2. 安装完成之后,将安装⽬录下的msys2_shell.cmd中注释掉的 rem set3. 修改pacman 镜像源并安装依赖4. 下载并编译源码 FFmpeg命令行环境…...

链路聚合概述

目录 技术背景: 基本概念: 链路聚合的工作模式: 简介: 1)Manual Load-balance(手动负载分担) 简介: 配置实施: 2)LACP(链路聚合控制协议&#xff…...

【链表】算法题(二) ----- 力扣/牛客

一、链表的回文结构 思路: 找到链表的中间节点,然后逆置链表的后半部分,再一一遍历链表的前半部分和后半部分,判断是是否为回文结构。 快慢指针找到链表的中间节点 slow指针指向的就是中间节点 逆置链表后半部分 逆置链表后半部分…...

合成复用原则

合成复用原则 (Composite Reuse Principle, CRP) 合成复用原则(Composite Reuse Principle, CRP),也被称为组合/聚合复用原则,是面向对象设计中的一条重要原则。它的核心思想是:优先使用对象组合/聚合,而不…...

安卓自带camera hal3 实例README.md翻译

最近,遇到一个这样的问题,临时了解下这个驱动实现架构和特点,翻译如下 V4L2相机HALv3 camera.v4l2库使用视频Linux 2(V4L2)接口实现了camera HAL v3。这使得它在理论上可以与各种设备配合使用,尽管V4L2的…...

ActiViz实战:ActiViz中的自己实现鼠标双击事件

文章目录 1、添加鼠标事件2、网上实现双击事件的方式3、增加双击的时间限制4、补充说明1、添加鼠标事件 已知在C#中观察者/命令模式会报错,正常添加鼠标事件如下: private void VtkInteractorStyleTest() {vtkInteractorStyle style = vtkInteractorStyle.New();style.LeftB…...

Linux-交换空间(Swap)管理

引入概念 在计算机中,硬盘的容量一般比内存大,内存(4GB 8GB 16GB 32GB 64GB…),硬盘(512GB 1T 2T…)。 冯诺依曼的现代计算机结构体系里面的存储器就是内存 内存是一种易失性存储器&#xff0c…...

扫描某个网段下存活的IP:fping

前言: 之前用arp统计过某网段下的ip,但是有可能统计不全。网络管理平台又不允许登录。想要知道当前的ip占用情况,可以使用fping fping命令类似于ping,但比ping更强大。与ping需要等待某一主机连接超时或发回反馈信息不同&#x…...

【深度学习】PyTorch框架(3):优化与初始化

1.引言 在本文中,我们将探讨神经网络的优化与初始化技术。随着神经网络深度的增加,我们会遇到多种挑战。最关键的是确保网络中梯度流动的稳定性,否则可能会遭遇梯度消失或梯度爆炸的问题。因此,我们将深入探讨以下两个核心概念&a…...

Go-知识测试-子测试

Go-知识测试-子测试 1. 介绍2. 例子3. 子测试命名规则4. 选择性执行5. 子测试并发6. testing.T.Run7. testing.T.Parallel8. 子测试适用于单元测试9. 子测试适用于性能测试10. 总结10.1 启动子测试 Run10.2 启动并发测试 Parallel 建议先看:https://blog.csdn.net/a…...

.net core IConfiguration 读 appsettings.json 数据,举例

在.NET Core中,IConfiguration 接口是用来读取配置数据的,包括从 appsettings.json 文件中读取。下面是一个如何在使用.NET Core时通过 IConfiguration 读取 appsettings.json 数据的示例。 首先,假设你的 appsettings.json 文件内容如下&am…...

全球Windows机器蓝屏,作为量化人,我的检讨来了

昨天下午,微软给大家放了个假。Windows又双叒死机了。不过,这一次不是几台机器,而是全球大范围宕机。这一刻,大家都是“正蓝旗”。 蓝瓶的,效果好! 现在根本原因已经找到,绝大多数人的机器都已修…...

部署和运维

目录 1.Git1.1. Git指令中merge和rebase的区别1. Commit 记录2. 合并方式3. 冲突处理4. 使用场景选择建议 1.2. cherry-pick的使用如何使用 git cherry-pick例子处理冲突撤销 cherry-pick其他选项 结论 2. 部署1. Nginx的使用场景 编译打包1. webpack2. webpack打包优化1. 代码…...

微信小程序基本语法

官网 https://developers.weixin.qq.com/miniprogram/dev/framework/ 视频教程:尚硅谷微信小程序开发教程,2024最新微信小程序项目实战! 仿慕尚花坊项目源码:https://gitee.com/abcdfdewrw/flower-workshop 目录 一,初…...

测试用例的设计方法

等价类 等价类概念:在所有测试的数据中,具有某种共同特征的数据子集 边界值 边界值分析是对程序输入或输出的边界值进行测试的一种黑盒测试方法 边界值是作为等价类的补充,其主要区别是: 边界值测试设计不是从某一个等价类中…...

Android10.0 锁屏分析-KeyguardPatternView图案锁分析

首先一起看看下面这张图: 通过前面锁屏加载流程可以知道在KeyguardSecurityContainer中使用getSecurityView()根据不同的securityMode inflate出来,并添加到界面上的。 我们知道,Pattern锁所使用的layout是 R.layout.keyguard_pattern_view&a…...

Python 装饰器:函数的函数,代码的艺术

引言 在Python中,装饰器是一种强大的功能,允许程序员在不修改原函数源码的情况下增强或修改函数行为。装饰器本质上是一个接收函数作为参数的高阶函数,并返回一个新的函数或修改原函数的行为。这种机制极大地提高了代码的复用性、可读性和模…...

安全防御2

实验要求: 实验过程: 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换): 新建电信区: 新建移动区: 将对应接口划归到各自区域: 新建…...

C语言 ——— 打印水仙花数

目录 何为水仙花数 题目要求 代码实现 何为水仙花数 “水仙花数”是指一个n位数,其各位数字的n次方之和等于该数本身 如:153 1^3 5^3 3^3,则153就是一个“水仙花数” 题目要求 求出0~100000的所有“水仙花数”并输出 代码实现 #i…...

小白也能玩转AI视频:AnimateDiff文生视频快速部署指南

小白也能玩转AI视频:AnimateDiff文生视频快速部署指南 1. 什么是AnimateDiff文生视频 AnimateDiff是一个让你用文字直接生成动态视频的AI工具。想象一下,你只需要输入一段描述,比如"一个女孩在海边散步,风吹动她的长发&quo…...

信息学奥赛必备:用C++手把手教你实现圆的计算(附OpenJudge/洛谷真题解析)

信息学奥赛必备:用C手把手教你实现圆的计算(附OpenJudge/洛谷真题解析) 在信息学竞赛的入门阶段,几何计算往往是选手们遇到的第一个"拦路虎"。其中,圆的相关计算因其数学公式的简洁性和编程实现的多样性&…...

不只是复现:用SwinIR和DIV2K数据集训练自己的图像超分辨率模型

从零构建:基于SwinIR与DIV2K的定制化超分辨率训练实战 当你在社交媒体上看到一张模糊的老照片时,是否想过用AI技术让它重获新生?图像超分辨率技术正从实验室走向大众视野,而SwinIR作为该领域的新星,以其独特的Transfor…...

安装包制作教程:将Qwen3-ForcedAligner-0.6B打包为Windows应用

安装包制作教程:将Qwen3-ForcedAligner-0.6B打包为Windows应用 1. 引言 如果你用过Qwen3-ForcedAligner-0.6B这个音文对齐工具,肯定知道它有多实用——能精确到毫秒级的时间戳标注,让字幕制作变得轻松简单。但每次都要在命令行里敲代码、配…...

跨平台虚拟机工具:解锁macOS系统的开源解决方案

跨平台虚拟机工具:解锁macOS系统的开源解决方案 【免费下载链接】unlocker 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在虚拟化技术广泛应用的今天,跨平台系统体验已成为开发者和技术爱好者的基本需求。然而,VMware作…...

RK3588 Ubuntu 20.04 编译 eglinfo 踩坑实录:从 Python 环境配置到 Mali 驱动调试

RK3588 Ubuntu 20.04 编译 eglinfo 全流程解析与深度排错指南 在嵌入式图形开发领域,RK3588作为Rockchip旗舰级SoC,其Mali-G610 GPU的OpenGL ES支持能力直接影响工业HMI、车载中控等无头设备的图形表现。本文将系统性地剖析从Python环境修复到Mali驱动验…...

Notepad++ 高效文本编辑:管理Pixel Dream Workshop海量提示词与参数配置

Notepad 高效文本编辑:管理Pixel Dream Workshop海量提示词与参数配置 1. 为什么选择Notepad管理AI生成内容 如果你经常使用Pixel Dream Workshop这类AI工具,一定会遇到两个头疼问题:一是积累的提示词越来越多,杂乱无章难以管理…...

nli-distilroberta-base环境配置:Docker镜像内Python依赖与模型加载流程详解

nli-distilroberta-base环境配置:Docker镜像内Python依赖与模型加载流程详解 1. 项目概述 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务。它能智能分析两个句子之间的关系,判断它们属于以下哪种情况: 蕴…...

NVIDIA Profile Inspector:3个颠覆性技巧解锁显卡隐藏性能

NVIDIA Profile Inspector:3个颠覆性技巧解锁显卡隐藏性能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 我们都有过这样的经历:明明显卡配置不差,游戏却总是卡顿、…...

【开题答辩全过程】以 软件工程资源网站为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...