Go语言实现WebSocket协议

Posted 蓝桥云课精选

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言实现WebSocket协议相关的知识,希望对你有一定的参考价值。

点击标题下「实验楼」,可快速关注            


小编今天介绍的项目是基于 golang 实现 websocket 协议。


项目名称:


【Go语言实现WebSocket协议】


项目简介:


该项目基于GO语言实现一个简陋版本的 WebSocket 协议,项目首先分析了WebSocket 协议的握手过程以及通信帧格式,然后对协议中的一些算法做了介绍,接着就实现 WebSocket 数据接收发送功能及握手过程。


当然为了测试实现的 WebSocket 协议,最简单的例子就是实现一个 echo 服务了:通过浏览器 WebSocket 链接将消息发送给服务器,然后服务器再通过 WebSocket 链接将消息返回回来。因此最后实现了一个简单 HTTP 服务器来测试实现的 WebSocket 协议。


效果图:



在线环境:


实验楼配有在线开发环境,你只需浏览器就可在线开发、学习该项目,无需自己搭建环境,跟着课程文档引导,一步步动手实践操作,可以更快的上手项目开发。



在线环境示意图


关于课程就介绍这么多了,如果你想查看该项目的详细开发文档,可以点击“阅读原文”,最后简单的介绍一下WebSocket 协议……


附录:WebSocket 协议分析


WebSocket 协议解决了浏览器和服务器之间的全双工通信问题。


在WebSocket出现之前,浏览器如果需要从服务器及时获得更新,则需要不停的对服务器主动发起请求,也就是 Web 中常用的 poll 技术。


这样的操作非常低效,这是因为每发起一次新的 HTTP 请求,就需要单独开启一个新的 TCP 链接,同时 HTTP 协议本身也是一种开销非常大的协议。


为了解决这些问题,所以出现了 WebSocket 协议。WebSocket 使得浏览器和服务器之间能通过一个持久的 TCP 链接就能完成数据的双向通信。


WebSocket 和 HTTP 协议一般情况下都工作在浏览器中,但 WebSocket 是一种完全不同于 HTTP 的协议。


尽管,浏览器需要通过 HTTP 协议的 GET 请求,将 HTTP 协议升级为 WebSocket 协议。升级的过程被称为握手(handshake)。


当浏览器和服务器成功握手后,则可以开始根据 WebSocket 定义的通信帧格式开始通信了。


像其他各种协议一样,WebSocket 协议的通信帧也分为控制数据帧和普通数据帧,前者用于控制 WebSocket 链接状态,后者用于承载数据。




点击“阅读原文”,即可查看实现的详细文档~


点击下方
阅读文档

以上是关于Go语言实现WebSocket协议的主要内容,如果未能解决你的问题,请参考以下文章

使用 Go 语言创建 WebSocket 服务

go语言webSocket框架——gorilla

Go语言实现建立websocket连接并定时发送心跳

Go实现WebSocket案例

go语言聊天室实现(六)创建HTTP连接,并升级为长连接

go语言聊天室实现(二)gorilla/websocket中的聊天室示例