我在 go 中使用 websocket。我从一个简单的例子中得到了一个 websocket url 格式,我像这样用谷歌搜索:ws://{{$}}/ws比较完整的代码如下:主页.html:<html><head><title>Chat Example</title><script type="text/javascript"> $(function() { ...... if (window["WebSocket"]) { conn = new WebSocket("ws://{{$}}/ws"); conn.onclose = function(evt) { appendLog($("<div><b>Connection closed.</b></div>")) } conn.onmessage = function(evt) { appendLog($("<div/>").text(evt.data)) } } else { appendLog($("<div><b>Your browser does not support WebSockets.</b></div>")) } ...... });</script></head></html>和 wsServer.go:package mainimport ( "flag" "log" "net/http" "text/template")var addr = flag.String("addr", ":8080", "http service address")var homeTempl = template.Must(template.ParseFiles("home.html"))func serveHome(w http.ResponseWriter, r *http.Request) { ...... w.Header().Set("Content-Type", "text/html; charset=utf-8") homeTempl.Execute(w, r.Host)}func main() { http.HandleFunc("/", serveHome) http.HandleFunc("/ws", serveWs) err := http.ListenAndServe(:8080, nil) if err != nil { log.Fatal("ListenAndServe: ", err) }}我以为这将是一个正则表达式,而实际上我无法解释它。我在我自己的 PC 浏览器上测试它,并连接成功:http://localhost:8080 但http://ip:8080 (which ip is my computer's also the litsening server's ip)不是。为什么?当然,当我将“ws://{{$}}/ws”更改为某个网址时它会起作用。但我想知道为什么?这个表达式可以匹配什么?完整的示例代码很大,我认为上面的问题已经足够了。如果我错过了什么,你可以在这个页面找到完整的例子:https : //github.com/garyburd/go-websocket/tree/master/examples/chat
- 1 回答
- 0 关注
- 401 浏览
添加回答
举报
0/150
提交
取消