首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个websocket url "ws://{{$}}/ws“是什么意思?

这个websocket url "ws://{{$}}/ws“是什么意思?
EN

Stack Overflow用户
提问于 2013-08-17 16:14:34
回答 1查看 5.2K关注 0票数 6

我在go中使用websocket。我从一个简单的例子中得到了一个websocket url格式,我喜欢这样的例子:

代码语言:javascript
复制
ws://{{$}}/ws

下面是比较完整的代码:

home.html:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
package main

import (
    "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浏览器上测试它,并将成功连接到:

代码语言:javascript
复制
http://localhost:8080 

代码语言:javascript
复制
http://ip:8080 (which ip is my computer's also the litsening server's ip)

不。为什么?

当然,当我将"ws://{{$}}/ws“更改为某个url时,它可以工作。但是我想知道为什么?这个表达式能匹配什么?

完整的示例代码很大,我认为上面的例子就足够了。如果我遗漏了什么,您可以在这个页面中找到完整的示例:https://github.com/garyburd/go-websocket/tree/master/examples/chat

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-17 18:21:16

我猜您正在使用Go的模板包。模板包支持由那些花括号注释的{{ placeholders }}。这些花括号可能包含诸如rangeif等语句和变量名。变量名$是指向传递给template.Execute方法的根元素的特殊名称。

请添加您的wsServe方法的代码,以便我们可以看到您正在传递给模板的值。我稍后会延长答覆。

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

https://stackoverflow.com/questions/18290860

复制
相关文章

相似问题

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