gin框架写rest接口特别6,性能也很好。
本文介绍一下gin和gorilla结合创建websocket

文章目录

  • 1. gin
  • 2. gorilla
  • 3. js代码
  • 5. 测试

1. gin

github地址:https://github.com/gin-gonic/gin

安装gin的代码包

go get github.com/gin-gonic/gin

package main  import (  "github.com/gin-gonic/gin"
)  func main() {  bindAddress := "localhost:2303"  r := gin.Default()  //监听 get请求  /test路径r.GET("/test", func(c *gin.Context) {  c.JSON(200,[]string{"123", "321"})  })  r.Run(bindAddress)
}

上面是个简单的gin请求例子,更多使用方式请查看官方介绍

2. gorilla

gorilla拥有很多类库,这次我们使用的是它的webSocket

go get github.com/gorilla/websocket
1
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  },
}  //webSocket请求ping 返回pong
func ping(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) == "ping" {  message = []byte("pong")  }  //写入ws数据err = ws.WriteMessage(mt, message)  if err != nil {  break  }  }
}  func main() {  bindAddress := "localhost:2303"  r := gin.Default()  r.GET("/ping", ping)  r.Run(bindAddress)
}

3. js代码

<script>
var ws = new WebSocket("ws://localhost:2303/ping");
//连接打开时触发
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>

5. 测试

浏览器访问html代码,查看浏览器调试模式中的Console输出

Connection open …
Received Message: Hello WebSockets!

gin:结合gorilla实现webSocket相关推荐

  1. golang gin框架gorilla的websocket小案例

    golang gin框架中gorilla的websocket案例 在gin框架下 导入包 "github.com/gorilla/websocket" r.GET("/t ...

  2. 手机制作音乐专辑封面_你如何制作好的专辑封面

    手机制作音乐专辑封面 The best-loved albums of all time only seem to stand out in our memories (and the shelves ...

  3. gin中的websocket开发以及问题处理

    基本示例 这是使用gorilla/websocket 包实现websocket使用示例.为了方便描述问题只保留了主要代码. package ws import ("github.com/go ...

  4. Golang Iris Websocket 跨域问题

    问题描述 在尝试使用iris中的websocket搭建一个实时通讯聊天的demo时,出现一个Upgrade Error错误,一个跨域问题,网上说要修改golang中的websocket upgrade ...

  5. golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域

    常用包 常用包 说明 fmt 实现格式化的输入输出操作,其中的fmt.Printf()和fmt.Println()是开发者使用最为频繁的函数. io 实现了一系列非平台相关的IO相关接口和实现,比如提 ...

  6. go-kit入门指南

    go-kit 入门 1. microservice Go-Kit go kit 是一个分布式的开发工具集,在大型的组织(业务)中可以用来构建微服务.其解决了分布式系统中的大多数常见问题,因此,使用者可 ...

  7. [转]go-kit 入门

    go-kit 入门 1. microservice Go-Kit go kit 是一个分布式的开发工具集,在大型的组织(业务)中可以用来构建微服务.其解决了分布式系统中的大多数常见问题,因此,使用者可 ...

  8. golang实现的商城

    小程序商城 后台由golang实现 技术栈 先睹为快 系统架构 项目结构 项目启动流程 功能特点举例 项目架构 websocket通知新订单 邮件通知用户 定时器自动取消订单 后台由golang实现 ...

  9. web端数据实时更新是如何实现的?

    web端数据实时更新是如何实现的? 为了实现Web端数据的实时更新,我们可以使用两种方式. Ajax 轮询,通过定时器,定时刷新数据,但是实时性不够,且造成服务器的压力比较大 HTTP协议工作于客户端 ...

最新文章

  1. 机器视觉学习笔记:BP神经网络详解
  2. 关于OUTLOOK 2007邮件无法打印的问题解决方法
  3. Redefine:Change in the Changing World
  4. Matplotlib Tutorial(译)
  5. mac下卸载jdk1.7
  6. 前端学习(3076):vue+element今日头条管理-分支的使用
  7. 【Javascript 拾遗之三】Closure 闭包
  8. python数组索引和切片_python numpy数组的索引和切片的操作方法
  9. ASP.NET2.0的快速入门站点
  10. 带你深挖Java泛型类型擦除以及类型擦除带来的问题
  11. Mybaitis框架与Spring整合详解(三)
  12. 第四章 选择结构程序设计习题总结
  13. 新浪微博注册(elenium Python 自动化)
  14. 7714天,王小川正式卸任搜狗CEO!网友:别了。。。
  15. vue.js环境+腾讯防水墙+实现弹窗滑动模块验证登录
  16. 《线性代数:行列式》: 克拉默法则
  17. 中国慕课moocpython答案_中国大学慕课moocPython编程基础答案
  18. STM32F4型号命名规则
  19. 最适合深夜失眠听的歌,听了最容易入睡的歌曲推荐
  20. 打造全新的网站群管理系统

热门文章

  1. CTF-NEFU校赛-题解
  2. 5G网络学习(三)——大白话讲解PDU会话(未完待续)
  3. vue 使用百度地图(全景图)
  4. 路由器交换与配置综合实验(二)外网
  5. Relax与CMMI Level 4 KPA的对应关系
  6. css3实现磨砂效果,CSS3打造磨砂玻璃背景效果
  7. 第4章 控制执行流程
  8. 3种简单的键盘记录简单介绍
  9. 如何让电脑运行速度变快
  10. haut 1262: 魔法宝石(dij+堆优化)@