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协议的主要内容,如果未能解决你的问题,请参考以下文章