gin websocket
2024-10-19 22:40:40
gin 中使用websocket功能
go get github.com/gorilla/websocket
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true
},
}
engine.GET("/hello", func(context *gin.Context) {
logrus.Infof("hello websocket")
ws, err := upgrader.Upgrade(context.Writer, context.Request, nil)
if err != nil {
logrus.Errorf("websocket upgrade failed with err(%v)", err)
return
}
go func() {
for {
t, message, err := ws.ReadMessage()
if err != nil {
logrus.Errorf("readmessage with err(%v)", err)
break
}
logrus.Infof("type[%v]", t)
// 写回去
ws.WriteMessage(t, message)
}
ws.Close()
}()
})
对应的前端js代码
<body>
<button id="start">开始</button>
<button id="stop">停止</button>
<script src="../bootstrap/jquery-3.6.3.js"></script>
<script>
var ws;
$(function() {
console.log("websocket test start: " + document.location.hostname);
ws = new WebSocket("ws://" + document.location.hostname + ":55555/hello")
ws.binaryType = "arraybuffer"
ws.onopen = function(e) {
console.log("opened", ws.binaryType);
}
ws.close = function(e) {
console.log("closed");
}
ws.onmessage = function(e) {
console.log("recv: " + e.data);
}
var timer;
$('#start').click(function() {
timer = setInterval(function() {
let arr = new ArrayBuffer(12);
let b = new Uint8Array(arr);
for (let i=0; i<b.length; i++) {
b[i] = i*i
}
ws.send(b.buffer)
ws.send("hello");
}, 1000)
})
$('#stop').click(function() {
clearInterval(timer);
})
})
</script>
</body>
最新文章
- boostrap 模态框
- 面筋BD
- awk 筛选特定长度的序列
- leetcode150 Evaluate Reverse Polish Notation
- Azure SQL Database 时间点还原(Point in Time Restore)功能
- mysql开启日志
- gif动态图片去白边,杂边
- PHP 201307 月最新手册chm 免费下载
- ueditor 添加微软雅黑字体 异常“从客户端中检测到有潜在危险的 request.form值”,解决
- github 提交时候提示 org.eclipse.jgit.errors.ObjectWritingException: Unable to create new object: /usr/local/apache243/ht
- Android自定义View研究--View中的原点坐标和XML中布局自定义View时View触摸原点问题
- linux下mysql修改root密码
- ES6中的迭代器(Iterator)和生成器(Generator)
- SQL反模式学习笔记3 单纯的树
- 如何热更新线上的Java服务器代码
- Java利用原始HttpURLConnection发送http请求数据小结
- mybatis第一次搭建出错
- tcpdump详解
- 潭州课堂25班:Ph201805201 第一课:环境搭建 (课堂笔记)
- 一篇提及如何通过串口读取并提取GPS信号的论文