当前位置: 首页 > news >正文

如何做产品销售网站网站查询ip地址查询

如何做产品销售网站,网站查询ip地址查询,上虞做网站公司,ui设计介绍目录 什么是websocket golang中使用websocket Server端 Client端 什么是websocket WebSocket是一种在互联网上提供全双工通信的协议,即允许服务器和客户端之间进行双向实时通信的网络技术。它是作为HTML5的一部分标准化的,旨在解决传统HTTP协议在实…

目录

什么是websocket

golang中使用websocket

Server端

Client端 


什么是websocket

WebSocket是一种在互联网上提供全双工通信的协议,即允许服务器和客户端之间进行双向实时通信的网络技术。它是作为HTML5的一部分标准化的,旨在解决传统HTTP协议在实时性、长连接方面存在的不足。

以下是WebSocket的主要特点和工作方式:

  1. 双向通信:不同于HTTP请求-响应模式的单向通信,WebSocket允许服务器和浏览器(或客户端)都能发起数据传输,实现实时的数据交互。

  2. 持久连接:一旦WebSocket握手成功建立,浏览器和服务器之间会保持一个持续打开的TCP连接,无需为每个数据包都重新建立连接。

  3. 基于TCP:WebSocket协议是基于TCP的,确保了数据可靠传输。

  4. 轻量级协议:虽然WebSocket握手阶段借用了一些HTTP的概念,但随后的数据传输则采用专有的简洁二进制帧格式,有效减少了头部开销,更适合实时通信场景。

  5. 事件驱动:WebSocket API是事件驱动的,开发者可以通过监听各种事件(如open、message、error、close)来处理连接状态变化和数据接收。

  6. 低延迟:由于避免了HTTP的“请求-响应”循环,WebSocket能够减少不必要的延迟,对于实时聊天、游戏、股票报价、协同编辑等应用场景尤为适用。

WebSocket的工作流程始于一次特殊的HTTP请求,通过升级协议(Upgrade)头信息,客户端请求将HTTP连接转换为WebSocket连接。如果服务器同意升级,那么双方就进入WebSocket协议的通信阶段,直至连接关闭为止。

golang中使用websocket

在Go语言中使用WebSocket,您可以使用第三方库如github.com/gorilla/websocket来实现。以下是一个基本的WebSocket服务器端和客户端示例:

go get -u github.com/gorilla/websocket

Server端

package mainimport ("log""net/http""github.com/gorilla/websocket"
)var upgrader = websocket.Upgrader{ReadBufferSize:  1024,WriteBufferSize: 1024,CheckOrigin: func(r *http.Request) bool {return true // 允许所有源,生产环境中应根据需要设置更严格的CORS策略},
}func serveWs(w http.ResponseWriter, r *http.Request) {conn, err := upgrader.Upgrade(w, r, nil)if err != nil {log.Println("Failed to set up WebSocket connection:", err)return}defer conn.Close()for {// 读取客户端发送的消息msgType, msg, err := conn.ReadMessage()if err != nil {log.Println("Failed to read WebSocket message:", err)break}log.Printf("Received message from client: %s", msg)// 假设我们只是简单地将接收到的消息回传给客户端err = conn.WriteMessage(msgType, msg)if err != nil {log.Println("Failed to send WebSocket message:", err)break}}
}func main() {http.HandleFunc("/ws", serveWs)log.Println("Starting WebSocket server on :8080...")err := http.ListenAndServe(":8080", nil)if err != nil {log.Fatal("Error starting server:", err)}
}

Client端 

package mainimport ("github.com/gorilla/websocket""log""net/url"
)func main() {u := url.URL{Scheme: "ws", Host: "localhost:8080", Path: "/ws"}log.Printf("Connecting to %s", u.String())c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)if err != nil {log.Fatal("Failed to connect to WebSocket server:", err)}defer c.Close()err = c.WriteMessage(websocket.TextMessage, []byte("Hello from client!"))if err != nil {log.Println("Failed to send message:", err)return}_, msg, err := c.ReadMessage()if err != nil {log.Println("Failed to receive message:", err)return}log.Printf("Received message from server: %s", msg)
}

在这个简单的示例中,服务器端创建了一个WebSocket升级器(upgrader),用于将HTTP请求升级为WebSocket连接。当客户端连接到/ws端点时,服务器端会创建一个新的WebSocket连接并进入一个无限循环,不断地读取客户端发送的消息并将其回传给客户端。

客户端则使用默认的Dialer连接到服务器,发送一条消息("Hello from client!"),然后接收并打印来自服务器的回复。在实际应用中,您需要根据需求扩展和定制这些基础功能,例如处理不同类型的WebSocket消息、实现消息广播、连接管理等。

http://www.15wanjia.com/news/6202.html

相关文章:

  • 快速学电脑培训班西安分类信息seo公司
  • 办公室装修一般多少钱一个平方seo手机搜索快速排名
  • 国外做问卷网站专业做网站
  • 葡萄牙语独立站建设哪家好房地产销售怎么找客户
  • 深圳企业网站设计艾滋病阻断药
  • 做网站的主要任务广告设计公司
  • 珠海做网站公司重庆快速网络推广
  • 如何取消网站备案号石家庄seo外包公司
  • 用nas做网站河北网络推广技术
  • 北京哪家做网站和网络推广好的个人博客
  • 适合女生的十大热门专业包头整站优化
  • 国内python 做的网站微博营销软件
  • 广州网站建设乛新科送推广360优化大师安卓手机版下载安装
  • 免费ppt模板下载大全网站永州网络推广
  • 借款网站模板aso优化分析
  • wordpress汉化管理界面浙江关键词优化
  • 搭建网站视频教程广东深圳疫情最新消息
  • 灵台县门户网站网络营销未来有哪些发展趋势
  • javaee网站开发视频百度推广网站一年多少钱
  • 公众号版影视网站开发seo专业技术培训
  • 网站的c4d动画是怎么做的制作网站平台
  • 网站制作合作微信公众号小程序怎么做
  • 网站搭建教程导航类百度推广业务电话
  • 表情包做旧网站邢台网站网页设计
  • 提供手机自适应网站建设百度联盟个人怎么接广告
  • 网站开发 介绍 回扣网站要怎么创建
  • 网站建设基础知识大连网站建设费用
  • 网站呼叫中心 建设工期北京最新疫情
  • 建设部网站上查不到资质的企业太原搜索引擎优化招聘信息
  • 西安政府网站开发公司深圳高端网站制作公司