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>

gin websocket的更多相关文章

  1. 使用Gin+WebSocket在HTML中无插件播放RTSP

    在后台的开发中遇到了对接显示摄像头视频流的需求.目前获取海康及大华等主流的摄像头的视频流使用的基本都是RTSP协议.不过HTML页面并不能直接播放RTSP协议的视频流,查询了一番各种网页播放RTSP的 ...

  2. golang实现WebSocket的商业化使用的开发逻辑(1)

    WebSocket是什么 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议.其最大特点之一就是:服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对 ...

  3. GIN+GORILLA=A GOLANG WEBSOCKET SERVER

    鉴于聊天已然成为大部分app的基础功能,而大部分app用户基数有没有辣么大,常用的聊天server架构如xmpp或者消息队列实现之类的用起来还挺麻烦的,有比较难跟网页端做交互,加之H5标准落地,所以w ...

  4. golang Gin framework with websocket

    概述 golang websocket 库 示例 后端 前端 结论 概述 对于 golang 的 web 开发, 之前写过 2 篇 blog, 分别介绍了: 在 Gin 框架下, 各类 http AP ...

  5. 石墨文档Websocket百万长连接技术实践

    引言 在石墨文档的部分业务中,例如文档分享.评论.幻灯片演示和文档表格跟随等场景,涉及到多客户端数据同步和服务端批量数据推送的需求,一般的 HTTP 协议无法满足服务端主动 Push 数据的场景,因此 ...

  6. 漫扯:从polling到Websocket

    Http被设计成了一个单向的通信的协议,即客户端发起一个request,然后服务器回应一个response.这让服务器很为恼火:我特么才是老大,我居然不能给小弟发消息... 轮询 老大发火了,小弟们自 ...

  7. 细说WebSocket - Node篇

    在上一篇提高到了 web 通信的各种方式,包括 轮询.长连接 以及各种 HTML5 中提到的手段.本文将详细描述 WebSocket协议 在 web通讯 中的实现. 一.WebSocket 协议 1. ...

  8. java使用websocket,并且获取HttpSession,源码分析

    转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6238826.html 一:本文使用范围 此文不仅仅局限于spring boot,普通的sprin ...

  9. WebSocket - ( 一.概述 )

    说到 WebSocket,不得不提 HTML5,作为近年来Web技术领域最大的改进与变化,包含CSS3.离线与存储.多媒体.连接性( Connectivity )等一系列领域,而即将介绍的 WebSo ...

  10. php+websocket搭建简易聊天室实践

    1.前言 公司游戏里面有个简单的聊天室,了解了之后才知道是node+websocket做的,想想php也来做个简单的聊天室.于是搜集各种资料看文档.找实例自己也写了个简单的聊天室. http连接分为短 ...

随机推荐

  1. ionic4 可能忽略的一些细节

    1.iOS中,页面被状态栏遮挡的问题 有的说 具体是解决是  在config.xml   配置如下代码 <preference name="StatusBarStyle"   ...

  2. Cocos Creator微信登录接入(完全小白教程)(安卓篇)

    1:创建 Creator项目,如下

  3. [数据库-Mongo总结]-mysql使用总结和pymysql交互

    3. MySQL 3.1 安装 3.1.1 win 3.1.1.1 安装 >下载mysql >mysql-front: Host:localhost 端口:3306 用户:root 3.1 ...

  4. 如何在mac上配置Apache服务器

    ​ 如何在mac上配置Apache服务器 1. 打开终端,开启Apache: //开启apache:  sudo apachectl start //重启apache:  sudo apachectl ...

  5. VS2015使用gitee插件进行协同开发

    众所周知,软件项目壮大后是需要安装git,svn这些协同软件来进行合作开发的.最近接了一位电气工程师的活,让我帮忙开发一套上位机,这位工程师年数已高,仍热心学习编程每日至深夜.于是乎,我们商讨之下便决 ...

  6. WPF 文本逐字一个个出现的动画效果

    一.效果图: 二.前台代码: <Grid> <TextBlock Foreground="Transparent" x:Name="text" ...

  7. Java_用数组保存并显示杨辉三角

    import java.util.Scanner; public class Yang_Hui_Triangle { public static void main(String[] args) { ...

  8. scrollIntoView()方法将元素滚动到浏览器窗口的可见区域

    TIPS:容器可滚动时才有用! 语法 element.scrollIntoView(); // 等同于element.scrollIntoView(true) element.scrollIntoVi ...

  9. Python的入门学习Day 25~27——form”夜曲编程“

    Day 27 time: 2021.8.24. ​ 时流轻快,转眼间就载着我到达了学习Python的第27个日子.一开始,我还以为本次学习的全程对我而言小菜一碟--但,当我亲自走过以后,发现这些进步, ...

  10. 4、Hadoop初识