首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Websocket拨号程序维护websocket连接

Websocket拨号程序维护websocket连接
EN

Stack Overflow用户
提问于 2020-12-03 03:06:26
回答 1查看 1.3K关注 0票数 0

我正在测试Go websocket拨号程序来连接我自己的websocket服务器。这是拨号代码:

代码语言:javascript
复制
package main

import (
    "log"
    "github.com/gorilla/websocket"
)

var (
    ws  *websocket.Conn
)

func main() {

    //add self as sender client
    u := "ws://localhost:5005/ws"
    log.Printf("Connecting to %s", u)
    ws, res, err := websocket.DefaultDialer.Dial(u, nil)
    if err != nil {
        log.Println("[DIAL]", err)
    }
    log.Println(ws)
    log.Println(res)
}

我的服务器代码:

代码语言:javascript
复制
    package main
    
    import (
        "fmt"
        "io/ioutil"
        "log"
        "net/http"
        "pubsubserver/pubsub"
    
        "github.com/gorilla/websocket"
        uuid "github.com/satori/go.uuid"
        "github.com/valyala/fasthttp"
    )
    
    var upgrader = websocket.Upgrader{
        ReadBufferSize:  1024,
        WriteBufferSize: 1024,
    }
    
    
    func websocketHandler(w http.ResponseWriter, r *http.Request) {
        upgrader.CheckOrigin = func(r *http.Request) bool { return true }
        conn, err := upgrader.Upgrade(w, r, nil)
        if err != nil {
            log.Println(err)
            return
        }
        
        //... some process to add client
    
        fmt.Println("new client connected.")
    
        for {
           //... some process to handle client message
            }
            ps.HandleReceivedMessage(client, messageType, p)
        }
    }
    
    func main() {
        http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
            http.ServeFile(w, r, "static")
        })
        http.HandleFunc("/ws", websocketHandler)
    
        err := http.ListenAndServe(":5005", nil)
        if err != nil {
            log.Println("http server err: ",err)
    
            return
        }
}

我运行我的服务器,运行dialer.go。我的服务器返回一些消息:

新客户端连接。2020/12/03 11:01:19连接错误:读取tcp:1:5005->:1:55227:读:由对等方重置连接

通过日志消息,我是否正确地假定连接成功,但拨号程序在成功连接后立即关闭连接?

在连接到websocket服务器后,如何让拨号程序持久化连接?

EN

回答 1

Stack Overflow用户

发布于 2020-12-03 04:23:57

若要防止应用程序表单退出,请在函数main()的末尾添加以下代码行

代码语言:javascript
复制
 select {} // block forever.

这将使连接保持打开,但不会对它做任何有用的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65119304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档