在 Golang 中渲染页面后如何发送 websocket 数据?
How do you send websocket data after a page is rendered in Golang?
我是 Golang 的新手,正在尝试使用网络套接字将数据发送到页面。我有一个处理程序,我希望能够提供一个文件,并在它呈现后向它发送一条消息。这是我现在拥有的一些代码。
package main
import (
"github.com/gorilla/websocket"
"log"
"fmt"
"net/http"
)
var upgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
}
func serveRoot(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "views/index.html")
_, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println(err)
return
}
}
func main() {
http.HandleFunc("/", serveRoot)
fmt.Println("Started")
if err := http.ListenAndServe(":9090", nil); err != nil {
log.Fatal("ListenAndServe:", err)
}
}
问题是使用 gorilla
库我不知道如何发送数据,并且在加载页面时得到一些输出。
2018/01/23 08:35:24 http: multiple response.WriteHeader calls
2018/01/23 08:35:24 websocket: the client is not using the websocket protocol: 'upgrade' token not found in 'Connection' header
2018/01/23 08:35:24 http: multiple response.WriteHeader calls
2018/01/23 08:35:24 websocket: 'Origin' header value not allowed
意图:在页面渲染后发送一些数据,然后(稍后)将其连接到stdin
/ stderr
免责声明:我只是在学习编码,所以如果你能考虑到这一点并且不要太含糊,那将是一个很大的帮助。
因此,正如某些评论所提到的,您无法升级已经提供服务的连接 html。做到这一点的简单方法是为您的 websockets 设置一个端点,为您的 html.
设置一个端点
因此在您的示例中,您可以这样做:
http.HandleFunc("/", serveHtml)
http.HandleFunc("/somethingElse", serveWebsocket)
serveHtml 有您的 http.ServeFile
调用,serveWebsocket
有升级和 wotnot。
我是 Golang 的新手,正在尝试使用网络套接字将数据发送到页面。我有一个处理程序,我希望能够提供一个文件,并在它呈现后向它发送一条消息。这是我现在拥有的一些代码。
package main
import (
"github.com/gorilla/websocket"
"log"
"fmt"
"net/http"
)
var upgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
}
func serveRoot(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "views/index.html")
_, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println(err)
return
}
}
func main() {
http.HandleFunc("/", serveRoot)
fmt.Println("Started")
if err := http.ListenAndServe(":9090", nil); err != nil {
log.Fatal("ListenAndServe:", err)
}
}
问题是使用 gorilla
库我不知道如何发送数据,并且在加载页面时得到一些输出。
2018/01/23 08:35:24 http: multiple response.WriteHeader calls
2018/01/23 08:35:24 websocket: the client is not using the websocket protocol: 'upgrade' token not found in 'Connection' header
2018/01/23 08:35:24 http: multiple response.WriteHeader calls
2018/01/23 08:35:24 websocket: 'Origin' header value not allowed
意图:在页面渲染后发送一些数据,然后(稍后)将其连接到stdin
/ stderr
免责声明:我只是在学习编码,所以如果你能考虑到这一点并且不要太含糊,那将是一个很大的帮助。
因此,正如某些评论所提到的,您无法升级已经提供服务的连接 html。做到这一点的简单方法是为您的 websockets 设置一个端点,为您的 html.
设置一个端点因此在您的示例中,您可以这样做:
http.HandleFunc("/", serveHtml)
http.HandleFunc("/somethingElse", serveWebsocket)
serveHtml 有您的 http.ServeFile
调用,serveWebsocket
有升级和 wotnot。