golang gin框架中gorilla的websocket案例

在gin框架下
导入包
"github.com/gorilla/websocket"

r.GET("/test", test)
//webSocket请求haha 返回heihei
func test(c *gin.Context) {//升级get请求为webSocket协议ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)if err != nil {return}defer ws.Close()for {//读取ws中的数据mt, message, err := ws.ReadMessage()if err != nil {break}if string(message) == "haha" {message = []byte("heihei")}//写入ws数据err = ws.WriteMessage(mt, message)if err != nil {break}}
}

在谷歌浏览器里添加一个插件(Simple WebSocket Client),来测试自己写的api,
URL: ws://127.0.0.1:8081/test

//前后端交互的小案例

上代码:

package main  import (  "github.com/gin-gonic/gin"  "github.com/gorilla/websocket" "net/http"
)  var upGrader = websocket.Upgrader{  CheckOrigin: func (r *http.Request) bool {  return true  },
}  func test(c *gin.Context) {  //升级get请求为webSocket协议ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)  if err != nil {  return  }  defer ws.Close()  for {//读取ws中的数据  mt, message, err := ws.ReadMessage()  if err != nil {  break  }  if string(message) == "haha" {  message = []byte("heihei")  }  //写入ws数据err = ws.WriteMessage(mt, message)  if err != nil {  break  }  }
}  func main() {  bindAddress := "localhost:8081"  r := gin.Default()  r.GET("/test", test)  r.Run(bindAddress)
}

js代码:

<script>
var ws = new WebSocket("ws://localhost:8081/test");
//连接打开时触发
ws.onopen = function(evt) {  console.log("Connection open ...");  ws.send("Hello WebSockets!");
};
//接收到消息时触发
ws.onmessage = function(evt) {  console.log("Received Message: " + evt.data);
};
//连接关闭时触发
ws.onclose = function(evt) {  console.log("Connection closed.");
};  </script>

golang gin框架gorilla的websocket小案例相关推荐

  1. [golang gin框架] 27.Gin 商城项目-购物车

    1.先来看一个问题 购物车数据保持到哪里? 1.购物车数据保存在本地 (cookie或者 redis缓存中),下面统一保存到cookie中,保存到redis中和cookie中逻辑步骤其实都是一样的 2 ...

  2. [golang gin框架] 24.Gin 商城项目-redis讲解以及操作

    一.reids相关文章 Redis五种数据类型及其应用场景 REDIS中的缓存穿透,缓存击穿,缓存雪崩原因以及解决方案 redis实现用户签到,统计活跃用户,用户在线状态,用户留存率 [golang ...

  3. [golang gin框架] 4.自定义Model以及Gin 文件上传

    一.Gin 中自定义 Model 关于 Model 如果应用非常简单的话,我们可以在 Controller 里面处理常见的业务逻辑,但是如果 有一个功能想在多个控制器.或者多个模板里面复用的话,那么就 ...

  4. [golang gin框架] 6.Gin GORM简介以及安装

    介绍 GORM 是 Golang 的一个 orm 框架,简单说,ORM 就是通过实例对象的语法,完成关系型 数据库的操作的技术,是"对象-关系映射"(Object/Relation ...

  5. [golang gin框架] 29.Gin 商城项目-用户登录,注册操作

    一.用户登录,注册界面展示说明 先看登录,注册界面以及相关流程,再根据流程写代码,一般网站的登录,注册功能都会在一个页面进行操作,还有的是在几个页面进行操作,这里讲解在几个页面进行注册的操作,步骤如下 ...

  6. [golang gin框架] 16.Gin 商城项目-商品模块数据表ER图关系分析

    1.数据表ER图 2.数据表相关 (1).商品分类表相关 1).数据表 -- ---------------------------- -- Table structure for goods_cat ...

  7. golang gin框架源码分析(二)---- 渐入佳境 摸索Engine ServeHTTP访问前缀树真正原理

    文章目录 全系列总结博客链接 前引 golang gin框架源码分析(二)---- 渐入佳境 摸索Engine ServeHTTP访问前缀树真正远原理 1.再列示例代码 从示例代码入手 2.r.Run ...

  8. Golang gin框架

    gin框架学习 一.Gin 介绍 二.Gin 环境搭建 三.golang 程序的热加载 安装fresh 库 四.Gin 框架中的路由 4.1 路由概述 4.2 简单的路由配置 4.3 动态路由 4.4 ...

  9. GinCMS 使用golang Gin框架xorm开发的小型内容管理系统

    系统介绍 服务器端:使用GoLang,基于Gin框架.MySQL数据库.用到的组件xorm. 前端展示:使用基于LayUI的layuicms.用到的第三方组件authtree.treeTable. G ...

最新文章

  1. php 将内容中的图片的域名,php给编辑器中的图片地址添加域名
  2. 微信黑科技-推荐系统,一文带你看懂为什么微信推荐这么快?
  3. RHCS套件实现高可用负载均衡集群(三)——共享存储
  4. Oracle NVL与Coalesce函数的区别
  5. (数据库系统概论|王珊)第九章关系查询处理和关系优化-第一节:查询处理
  6. 成为linux全栈工程师:2019.05.25
  7. 实现弹出窗口并转到另一个页面
  8. 安卓自定义注解支持和示例实现
  9. pytorch tensor操作:tensor与numpy转换
  10. linux快捷键停止抓包命令,【linux命令】Linux抓包命令tcpdump以及常见抓包使用方法...
  11. AMOS软件介绍开篇;草堂君给数据分析学习者的几点建议
  12. 路由器DNS根域名解析失败
  13. 广东户外徒步指南 持续更新
  14. 复杂网络——常见的论文下载和真实数据集下载网站
  15. 天天在做大数据,你的时间都花在哪了
  16. 学生学号判断专业班级
  17. 短信转发器 SmsForwarder,备用机必备神器,开源免费
  18. 多线程学习-day-07CountDownLatch、CyclicBarrier
  19. Matlab软件的熟悉
  20. Cesium实现动态绘制轨迹线

热门文章

  1. Autodesk Maya 2018.6 中文特别版 Mac 顶级三维动画制作工具
  2. HTTP缓存的深入介绍:Cache-Control和Vary
  3. Collaborative Spatiotemporal Feature Learning for Video Action Recognition 论文笔记
  4. twctf_2018_bbq
  5. TCP序列号和确认号
  6. 只读事务是否做无用功?
  7. 打造爆款产品只需四步,学会你也能爆单
  8. 学好C语言,你只需要这几句口诀!
  9. python画蜡烛图_Python量化交易-绘制蜡烛图 !这个图不像你的钱哦!
  10. 项目开发流程(简述)