gin:结合gorilla实现webSocket
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相关推荐
- golang gin框架gorilla的websocket小案例
golang gin框架中gorilla的websocket案例 在gin框架下 导入包 "github.com/gorilla/websocket" r.GET("/t ...
- 手机制作音乐专辑封面_你如何制作好的专辑封面
手机制作音乐专辑封面 The best-loved albums of all time only seem to stand out in our memories (and the shelves ...
- gin中的websocket开发以及问题处理
基本示例 这是使用gorilla/websocket 包实现websocket使用示例.为了方便描述问题只保留了主要代码. package ws import ("github.com/go ...
- Golang Iris Websocket 跨域问题
问题描述 在尝试使用iris中的websocket搭建一个实时通讯聊天的demo时,出现一个Upgrade Error错误,一个跨域问题,网上说要修改golang中的websocket upgrade ...
- golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域
常用包 常用包 说明 fmt 实现格式化的输入输出操作,其中的fmt.Printf()和fmt.Println()是开发者使用最为频繁的函数. io 实现了一系列非平台相关的IO相关接口和实现,比如提 ...
- go-kit入门指南
go-kit 入门 1. microservice Go-Kit go kit 是一个分布式的开发工具集,在大型的组织(业务)中可以用来构建微服务.其解决了分布式系统中的大多数常见问题,因此,使用者可 ...
- [转]go-kit 入门
go-kit 入门 1. microservice Go-Kit go kit 是一个分布式的开发工具集,在大型的组织(业务)中可以用来构建微服务.其解决了分布式系统中的大多数常见问题,因此,使用者可 ...
- golang实现的商城
小程序商城 后台由golang实现 技术栈 先睹为快 系统架构 项目结构 项目启动流程 功能特点举例 项目架构 websocket通知新订单 邮件通知用户 定时器自动取消订单 后台由golang实现 ...
- web端数据实时更新是如何实现的?
web端数据实时更新是如何实现的? 为了实现Web端数据的实时更新,我们可以使用两种方式. Ajax 轮询,通过定时器,定时刷新数据,但是实时性不够,且造成服务器的压力比较大 HTTP协议工作于客户端 ...
最新文章
- 机器视觉学习笔记:BP神经网络详解
- 关于OUTLOOK 2007邮件无法打印的问题解决方法
- Redefine:Change in the Changing World
- Matplotlib Tutorial(译)
- mac下卸载jdk1.7
- 前端学习(3076):vue+element今日头条管理-分支的使用
- 【Javascript 拾遗之三】Closure 闭包
- python数组索引和切片_python numpy数组的索引和切片的操作方法
- ASP.NET2.0的快速入门站点
- 带你深挖Java泛型类型擦除以及类型擦除带来的问题
- Mybaitis框架与Spring整合详解(三)
- 第四章 选择结构程序设计习题总结
- 新浪微博注册(elenium Python 自动化)
- 7714天,王小川正式卸任搜狗CEO!网友:别了。。。
- vue.js环境+腾讯防水墙+实现弹窗滑动模块验证登录
- 《线性代数:行列式》: 克拉默法则
- 中国慕课moocpython答案_中国大学慕课moocPython编程基础答案
- STM32F4型号命名规则
- 最适合深夜失眠听的歌,听了最容易入睡的歌曲推荐
- 打造全新的网站群管理系统