当前位置: 首页 > 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) # 停止处理。
http://www.lryc.cn/news/402894.html

相关文章:

  • Windows FFmpeg 开发环境搭建
  • 链路聚合概述
  • 【链表】算法题(二) ----- 力扣/牛客
  • 合成复用原则
  • 安卓自带camera hal3 实例README.md翻译
  • ActiViz实战:ActiViz中的自己实现鼠标双击事件
  • Linux-交换空间(Swap)管理
  • 扫描某个网段下存活的IP:fping
  • 【深度学习】PyTorch框架(3):优化与初始化
  • Go-知识测试-子测试
  • .net core IConfiguration 读 appsettings.json 数据,举例
  • 全球Windows机器蓝屏,作为量化人,我的检讨来了
  • 部署和运维
  • 微信小程序基本语法
  • 测试用例的设计方法
  • Android10.0 锁屏分析-KeyguardPatternView图案锁分析
  • Python 装饰器:函数的函数,代码的艺术
  • 安全防御2
  • C语言 ——— 打印水仙花数
  • 「Conda」在Linux系统中安装Conda环境管理器
  • 9.11和9.9哪个大?GPT-4o也翻车了
  • [开源]语雀+Vercel:打造免费个人博客网站
  • 使用ElementUI和element-china-area-data库实现省市区三级联动组件封装
  • 0718,TCP协议,三次握手,四次挥手
  • 如何安装Visual Studio Code
  • vi 编辑器快捷生成 main 函数和基本框架
  • npm相关指令
  • 为什么不要碰自媒体
  • 酷炫末世意境背景404单页HTML源码
  • PHP 调用 1688 详情 API 接口的实战攻略