美洲杯波胆_美洲杯波胆赔率
做最好的网站
来自 计算机教程 2019-07-26 04:34 的文章
当前位置: 美洲杯波胆 > 计算机教程 > 正文

golang基于websocket实现的简易聊天室程序

golang的template包很好用,做一些复杂的文本格式生成太有帮助了,生成网页也是很不错的,使用起来非常方便

golang websocket 聊天室

本文实例讲述了go语言template用法。分享给大家供大家参考。具体分析如下:

package main
import (
    "fmt"
    "bufio"
    "io"
    "os"
    "code.google.com/p/go.net/websocket"
)
func Command(ws *websocket.Conn) {
    r := bufio.NewReader(os.Stdin)
    w := bufio.NewWriter(ws)
    for {
        data, err := r.ReadBytes('n')
        if err != nil {
            panic(err)
        }
        _, err = w.Write(data)
        if err != nil {
            panic(err)
        }
        w.Flush()
        fmt.Printf("Myt> ")
    }
}
func main() {
    fmt.Printf(`Welcome chatroom!
    author: dotcoo zhao
    url: http://www.dotcoo.com/golang-websocket-chatroom
    `)
    origin := "http://127.0.0.1:6611/"     
    url := "ws://127.0.0.1:6611/chatroom"
    ws, err := websocket.Dial(url, "", origin)
    if err != nil {
        panic(err)
    }
    defer ws.Close()
    r := bufio.NewReader(ws)
    //w := bufio.NewWriter(os.Stdout)
    go Command(ws)
    for {
        data, err := r.ReadBytes('n')
美洲杯波胆,        if err == io.EOF {
            fmt.Printf("disconnectedn")
            os.Exit(0)
        }
        if err != nil {
            panic(err)
        }
        fmt.Printf("r%sMyt> ", data)
    }
}

package main
import (
    "fmt"
    "os"
    "text/template"
)
type Latlng struct {
    Lat float32
    Lng float32
}
func (latlng Latlng) String() string {
    return fmt.Sprintf("%g/%g", latlng.Lat, latlng.Lng)
}
func main() {
    data := []template.FuncMap{}
    data = append(data, template.FuncMap{"name":"dotcoo1", "url":"//www.jb51.net/", "latlng":Latlng{24.1, 135.1}})
    data = append(data, template.FuncMap{"name":"dotcoo2", "url":"//www.jb51.net/", "latlng":Latlng{24.2, 135.2}})
    data = append(data, template.FuncMap{"name":"dotcoo2", "url":"//www.jb51.net/", "latlng":Latlng{24.3, 135.3}})
    datatpl := `{{range .}}{{template "user" .}}{{end}}`
    usertpl := `{{define "user"}}name:{{.name}}, url:{{.url}}, latlng:{{.latlng}} lat:{{.latlng.Lat}} lng:{{.latlng.Lng}}
{{end}}`
    tpl, err := template.New("data").Parse(datatpl)
    if err != nil {
        panic(err)
    }
    _, err = tpl.Parse(usertpl)
    if err != nil {
        panic(err)
    }
    err = tpl.Execute(os.Stdout, data)
    if err != nil {
        panic(err)
    }
    println()
}

golang websocket 客户端

希望本文所述对大家的Go语言程序设计有所帮助。

go get code.google.com/p/go.net/websocket

复制代码 代码如下:

本文实例讲述了golang基于websocket实现的简易聊天室。分享给大家供大家参考,具体如下:

您可能感兴趣的文章:

复制代码 代码如下:

希望本文所述对大家Go语言程序设计有所帮助。

文档 : http://go.pkgdoc.org/code.google.com/p/go.net/websocket

简陋了些,但是基本功能都有了.

本文由美洲杯波胆发布于计算机教程,转载请注明出处:golang基于websocket实现的简易聊天室程序

关键词: