新闻中心
Golang如何使用WebSocket发送消息_Golang WebSocket消息发送方法
使用gorilla/websocket库可实现在Go中发送WebSocket消息。1. 通过go get github.com/gorilla/websocket安装库;2. 使用websocket.DefaultDialer.Dial建立连接;3. 调用conn.WriteMessage发送文本或二进制消息;4. 服务端用websocket.Upgrader升级HTTP连接并处理读写;5. 建议封装心跳与重连机制提升稳定性。

在Go语言中使用WebSocket发送消息,通常借助第三方库gorilla/websocket,它是目前最流行且稳定的WebSocket实现。下面介绍如何建立连接并发送消息。
1. 安装 gorilla/websocket 库
在项目中引入该库:go get github.com/gorilla/websocket
2. 建立WebSocket连接并发送消息
以下是一个简单的客户端示例,连接到WebSocket服务器并发送一条文本消息:
package main
import (
"fmt"
"log"
"net/url"
"os"
"github.com/gorilla/websocket"
)
func main() {
// WebSocket服务器地址
u := url.URL{Scheme: "ws", Host: "localhost:8080", Path: "/echo"}
log.Printf("连接到 %s", u.String())
// 建立连接
conn, _, err := websocket.Defa
ultDialer.Dial(u.String(), nil)
if err != nil {
log.Fatal("连接失败:", err)
}
defer conn.Close()
// 发送消息
message := "Hello, WebSocket Server!"
err = conn.WriteMessage(websocket.TextMessage, []byte(message))
if err != nil {
log.Println("发送消息失败:", err)
return
}
fmt.Println("已发送消息:", message)
// 可选:接收回显消息
_, received, err := conn.ReadMessage()
if err != nil {
log.Println("读取消息失败:", err)
} else {
fmt.Println("收到回复:", string(received))
}
}
3. 服务端接收并响应消息
一个简单服务端用于接收客户端消息并回显:
package main
import (
"log"
"net/http"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool { return true }, // 允许跨域
}
func echoHandler(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Print("升级失败:", err)
return
}
defer conn.Close()
for {
messageType, p, err := conn.ReadMessage()
if err != nil {
log.Println("读取失败:", err)
break
}
// 回显收到的消息
if err := conn.WriteMessage(messageType, p); err != nil {
log.Println("发送失败:", err)
break
}
}
}
func main() {
http.HandleFunc("/echo", echoHandler)
log.Println("服务启动在 :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
4. 消息类型说明
WebSocket支持多种消息类型:- websocket.TextMessage:文本消息,内容为UTF-8编码字符串
- websocket.BinaryMessage:二进制消息,适合传输字节流(如图片、协议数据)
conn.WriteMessage(websocket.TextMessage, []byte("文本"))conn.WriteMessage(websocket.BinaryMessage, []byte{0x01, 0x02, 0x03})
Motiff妙多
Motiff妙多是一款AI驱动的界面设计工具,定位为“AI时代设计工具”
334
查看详情
基本上就这些。只要建立好连接,调用 WriteMessage 即可发送消息。实际项目中建议封装连接管理、心跳机制和错误重连逻辑来提升稳定性。
以上就是Golang如何使用WebSocket发送消息_Golang WebSocket消息发送方法的详细内容,更多请关注其它相关文章!
# 内网
# 百度全网关键词排名
# seo推广外包费用高吗
# 台湾知名网站建设案例
# 重庆市网站推广怎么收费
# 杭州网络推广营销方案
# 西宁软件优化网站建设
# 福田免费的网站推广方案
# 网站推广包括什么类型
# 北京seo技能培训
# 青海网站建设详细策划
# 它是
# 是一个
# 访问权限
# 客户端
# git
# 何为
# 连接到
# 服务端
# 如何使用
# 发送消息
# 跨域
# ai
# websocket
# 字节
# 编码
# go语言
# golang
# github
# go
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法
css子元素高度不一致导致布局错位怎么办_使用align-items:stretch解决高度差异
c++ 命名空间怎么用 c++ namespace使用指南
Selenium Python中处理点击后新窗口加载冻结问题的策略与实践
必由学在线入口 必由学网页版快速登录入口
C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用
Pygame教程:解决用户输入与游戏状态更新不同步问题
Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求
Python实时数据流中的动态最值查找策略
使用 Pandas 高效处理 .dat 文件:字符清理与数据计算
Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】
拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法
如何在J*a中使用Locale处理多语言环境
Django模型中自动计算可用余额的实现方法
俄罗斯浏览器官网直达链接 俄罗斯浏览器最新在线入口导航
在python-socketio事件处理器中安全访问Flask应用上下文
红果短剧网页版官网入口 官方最新网址发布
CSS Grid如何控制元素对齐_align-items与justify-items组合使用
照顾宝贝2小游戏点击立即在线玩
在哪找SublimeJ远程工具_SFTP插件配置教程
sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程
mysql备份恢复性能优化_mysql备份恢复性能优化方法
composer的"require-dev"部分是用来做什么的?
C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器
J*aScript map 方法中处理循环元素为空数组的策略
Bing引擎入口最新2025 Bing搜索免费官方登录
如何在 Excel Online 和 Google 表格中更改日期格式
汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口
修复二维数组索引越界异常:一维循环到二维坐标的正确映射
Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】
千牛数据看板网页版_千牛数据看板网页版访问方法
Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值
J*aScript:在map操作中高效处理空数组
AO3官方镜像站点汇总 AO3同人作品网页版直达链接
J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题
Win11文件资源管理器卡顿怎么修 Win11重置资源管理器进程优化响应速度【修复方法】
漫蛙官网正版漫画入口 漫蛙2官方网页登录地址
Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示
快手赚钱渠道_快手收益来源
大麦的“候补”是什么意思 大麦候补购票规则【详解】
响应式容器内容自动缩放与宽高比维持教程
整合Supabase认证与Django模型:跨模式迁移的解决方案
我的世界官方游戏入口 我的世界官网平台直达链接
蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接
抓大鹅无需下载版 抓大鹅秒玩版入口
绝地鸭卫平a核爆刀流玩法攻略
快速CSGO开箱网站指南 CSGO开箱平台推荐
Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】
Win10桌面图标出现小盾牌怎么办 Win10去除UAC图标教程【解决】
漫蛙漫画登录站点 漫蛙2正版漫画快速访问


2025-11-27
浏览次数:次
返回列表
ultDialer.Dial(u.String(), nil)
if err != nil {
log.Fatal("连接失败:", err)
}
defer conn.Close()
// 发送消息
message := "Hello, WebSocket Server!"
err = conn.WriteMessage(websocket.TextMessage, []byte(message))
if err != nil {
log.Println("发送消息失败:", err)
return
}
fmt.Println("已发送消息:", message)
// 可选:接收回显消息
_, received, err := conn.ReadMessage()
if err != nil {
log.Println("读取消息失败:", err)
} else {
fmt.Println("收到回复:", string(received))
}
}