当前位置:网站首页>gorilla官方:golang开websocket client的示例代码
gorilla官方:golang开websocket client的示例代码
2022-07-07 17:52:00 【苦涩花开5486】
这是链接:websocket/examples/echo/client.go
// Copyright 2015 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build ignore
// +build ignore
package main
import (
"flag"
"log"
"net/url"
"os"
"os/signal"
"time"
"github.com/gorilla/websocket"
)
var addr = flag.String("addr", "localhost:8080", "http service address")
func main() {
flag.Parse()
log.SetFlags(0)
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)
u := url.URL{
Scheme: "ws", Host: *addr, Path: "/echo"}
log.Printf("connecting to %s", u.String())
c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
if err != nil {
log.Fatal("dial:", err)
}
defer c.Close()
done := make(chan struct{
})
go func() {
defer close(done)
for {
_, message, err := c.ReadMessage()
if err != nil {
log.Println("read:", err)
return
}
log.Printf("recv: %s", message)
}
}()
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
for {
select {
case <-done:
return
case t := <-ticker.C:
err := c.WriteMessage(websocket.TextMessage, []byte(t.String()))
if err != nil {
log.Println("write:", err)
return
}
case <-interrupt:
log.Println("interrupt")
// Cleanly close the connection by sending a close message and then
// waiting (with timeout) for the server to close the connection.
err := c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""))
if err != nil {
log.Println("write close:", err)
return
}
select {
case <-done:
case <-time.After(time.Second):
}
return
}
}
}
边栏推荐
- 关于ssh登录时卡顿30s左右的问题调试处理
- Is PMP beneficial to work? How to choose a reliable platform to make it easier to prepare for the exam!!!
- Notes...
- J ü rgen schmidhub reviews the 25th anniversary of LSTM papers: long short term memory All computable metaverses. Hierarchical reinforcement learning (RL). Meta-RL. Abstractions in generative adversar
- Jürgen Schmidhuber回顾LSTM论文等发表25周年:Long Short-Term Memory. All computable metaverses. Hierarchical reinforcement learning (RL). Meta-RL. Abstractions in generative adversarial RL. Soccer learn
- Welcome to the markdown editor
- 【STL】vector
- [RT thread env tool installation]
- 指定opencv非标准安装的版本
- 九章云极DataCanvas公司获评36氪「最受投资人关注的硬核科技企业」
猜你喜欢
最多可以参加的会议数目[贪心 + 优先队列]
Kirin Xin'an with heterogeneous integration cloud financial information and innovation solutions appeared at the 15th Hunan Financial Technology Exchange Conference
Redis master-slave and sentinel master-slave switchover are built step by step
Leetcode force buckle (Sword finger offer 36-39) 36 Binary search tree and bidirectional linked list 37 Serialize binary tree 38 Arrangement of strings 39 Numbers that appear more than half of the tim
The strength index of specialized and new software development enterprises was released, and Kirin Xin'an was honored on the list
关于ssh登录时卡顿30s左右的问题调试处理
开源重器!九章云极DataCanvas公司YLearn因果学习开源项目即将发布!
Nunjuks template engine
多个线程之间如何协同
openEuler 资源利用率提升之道 01:概论
随机推荐
歌单11111
项目经理『面试八问』,看了等于会了
R语言ggplot2可视化:使用ggpubr包的ggstripchart函数可视化分组点状条带图(dot strip plot)、设置position参数配置不同分组数据点的分离程度
R language dplyr package mutate_ At function and min_ The rank function calculates the sorting sequence number value and ranking value of the specified data column in the dataframe, and assigns the ra
Some arrangements about oneself
Dynamic addition of El upload upload component; El upload dynamically uploads files; El upload distinguishes which component uploads the file.
爬虫实战(七):爬王者英雄图片
Kirin Xin'an won the bid for the new generation dispatching project of State Grid!
ASP.NET体育馆综合会员管理系统源码,免费分享
开源OA开发平台:合同管理使用手册
转置卷积理论解释(输入输出大小分析)
R language ggplot2 visualization: use the ggdensity function of ggpubr package to visualize the packet density graph, and use stat_ overlay_ normal_ The density function superimposes the positive dist
【RT-Thread env 工具安装】
mock. JS returns an array from the optional data in the object array
干货分享|DevExpress v22.1原版帮助文档下载集合
R language uses ggplot2 function to visualize the histogram distribution of counting target variables that need to build Poisson regression model, and analyzes the feasibility of building Poisson regr
ASP. Net kindergarten chain management system source code
LeetCode_7_5
841. String hash
银行理财产品怎么买?需要办银行卡吗?