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>

最新文章

  1. boostrap 模态框
  2. 面筋BD
  3. awk 筛选特定长度的序列
  4. leetcode150 Evaluate Reverse Polish Notation
  5. Azure SQL Database 时间点还原(Point in Time Restore)功能
  6. mysql开启日志
  7. gif动态图片去白边,杂边
  8. PHP 201307 月最新手册chm 免费下载
  9. ueditor 添加微软雅黑字体 异常“从客户端中检测到有潜在危险的 request.form值”,解决
  10. github 提交时候提示 org.eclipse.jgit.errors.ObjectWritingException: Unable to create new object: /usr/local/apache243/ht
  11. Android自定义View研究--View中的原点坐标和XML中布局自定义View时View触摸原点问题
  12. linux下mysql修改root密码
  13. ES6中的迭代器(Iterator)和生成器(Generator)
  14. SQL反模式学习笔记3 单纯的树
  15. 如何热更新线上的Java服务器代码
  16. Java利用原始HttpURLConnection发送http请求数据小结
  17. mybatis第一次搭建出错
  18. tcpdump详解
  19. 潭州课堂25班:Ph201805201 第一课:环境搭建 (课堂笔记)
  20. 一篇提及如何通过串口读取并提取GPS信号的论文

热门文章

  1. Django models.py 表的参数选择
  2. CF1744F MEX vs MED
  3. bash编辑功能,在命令行里编辑快捷键
  4. BOOK01:《过目不忘的读书法》
  5. 访问第三方接口带Authorization认证
  6. Kittle 插入更新,时间格式错误。
  7. java中List的浅拷贝与深拷贝
  8. Iperf参数详解
  9. 1.markdown
  10. div 拖动 js实现