如何在Golang中使用WebSocket实现一个通信功能

  介绍

本篇文章给大家分享的是有关如何在Golang中使用WebSocket实现一个通信功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

什么是Golang

Golang是谷歌开发的一种静态强类型,编译型,并发型,并具有垃圾回收功能的编程语言,其语法与C语言相近,但并不包括如枚举,异常处理,继承,泛型、断言,虚函数等功能。

WebSocket是一种通信协议,旨在改善HTTP作为无状态协议通信的效率问题,WebSocket是客户端与服务器之间的全双工连接,客户端和服务器只需要建立一次连接就可以使用该连接进行通信。在我们的项目中,一般客户端是前端页面,使用JavaScript创建WebSocket与后端的WebSocket服务端进行通信。

下面首先看看我们的服务端代码

package 主要   ,   import  (   ,“fmt"   ,“html/template"   ,“;net/http"   ,“os"   ,“strings"   ,   ,“;golang.org/x/net/websocket"   )   ,   func 上部(ws  * websocket.Conn), {   ,var  err 错误   ,for  {   ,var  reply 字符串   ,   ,if  err =, websocket.Message.Receive (ws,和回复);,err  !=, nil  {   fmt.Println才能(err)   ,继续   ,}   ,   ,if  err =, websocket.Message.Send (ws, strings.ToUpper(回复));,err  !=, nil  {   fmt.Println才能(err)   ,继续   ,}   ,}   }   ,   func 指数(w  http.ResponseWriter, r  * http.Request), {   ,if  r.Method  !=,“GET", {   ,返回   ,}   ,   ,t, _ :=, template.ParseFiles (“index.html")   ,t.Execute (w, nil)   }   ,   func  main (), {   ,http.Handle (“/upper",, websocket.Handler(上))   ,http.HandleFunc(“/?,指数)   ,   ,if  err :=, http.ListenAndServe (“: 9999,,, nil);, err  !=, nil  {   ,fmt.Println (err)   ,os.Exit (1)   ,}   }

我们主要从函数看起,我们使用Golang的http包创建了一个服务器,该服务器能够处理两个请求,一个是/,这是Web项目的根路径,指数函数作为处理方法,返回首页索引。html。

服务器还处理/上请求,该请求的处理函数是一个WebSocket的处理函数,它包裹了我们自己定义的上层函数,上层函数有一个参数,就是服务端创建好的WebSocket连接,上函数逻辑很简单,通过WebSocket连接读取服务器的请求内容,将内容转化为大写后,通过WebSocket将结果返回给客户端。

& lt; ! DOCTYPE  html>   & lt; html>   & lt; head>   & lt;才能meta  charset=皍tf-8"/比;   & lt;才能title> Websocket</title>   & lt;/head>   & lt; body>   & lt;才能h2>字符串转换大写& lt;/h2>   & lt;才能form>   ,,,& lt; p>   ,,,,,字符串:,& lt; input  id=癱ontent",类型=皌ext",占位符=笆淙胍坏淖址氨?   ,,,& lt;/p>   & lt;才能/form>   & lt;才能label  id=皉esult"在结果为:& lt;/label> & lt; br> & lt; br>   & lt;才能button  onclick=胺⑺?)“在转换& lt;/button>   ,   & lt;才能script 类型=拔谋?javascript"比;   ,,,var  sock =,空;   ,,,var  wsuri =,“ws://127.0.0.1:9999/upper";   ,,,sock =, new  WebSocket (wsuri);   ,,,sock.onmessage =,函数(e), {   ,,,,,var  result =, . getelementbyid(& # 39;结果# 39;);   ,,,,,result.innerHTML =,“结果为:“,+,e.data;   ,,,}   ,   ,,,function 发送(),{   ,,,,,var  msg =, . getelementbyid(& # 39;内容# 39;)value;   ,,,,,sock.send(味精);   ,,,}   & lt;才能/script>   & lt;/body>   & lt;/html>

前端页面我们主要看JavaScript代码部分,首先建立一个全局的WebSocket,之后点击转换按钮时,就会将输入的内容通过WebSocket发送出去.WebSocket的onmessage函数用来处理服务端的响应,还有onerror, onclose等方法,分别是WebSocket的错误回调和关闭回调,本文并没有使用,一般用来处理资源回收和报错。

Golang可以很方便的使用WebSocket,只是使用WebSocket。处理程序包裹一个处理函数即可。

以上就是如何在Golang中使用WebSocket实现一个通信功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

如何在Golang中使用WebSocket实现一个通信功能