我正在测试Go websocket拨号程序来连接我自己的websocket服务器。这是拨号代码:
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)
}我的服务器代码:
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服务器后,如何让拨号程序持久化连接?
发布于 2020-12-03 04:23:57
若要防止应用程序表单退出,请在函数main()的末尾添加以下代码行
select {} // block forever.这将使连接保持打开,但不会对它做任何有用的事情。
https://stackoverflow.com/questions/65119304
复制相似问题