GO語言 --socket.io

來源:互聯網
上載者:User

標籤:war   web   main   trim   stdout   make   soc   ase   this   

socket.io是對websocket的封裝以及擴充, 可以跨平台使用, 具體可看官網..

GO語言實現:

package mainimport (    "github.com/googollee/go-socket.io"    "github.com/nicholaskh/log4go"    "net/http"    "os"    "time"    "path"    "strings"    "runtime"    "fmt")var gLogger log4go.Logger;//do init before all othersfunc initAll(){    gLogger = nil    initLogger()}//de-init for allfunc deinitAll(){    if(nil == gLogger) {        gLogger.Close();        gLogger = nil    }}func main()  {    initAll()    server, err := socketio.NewServer(nil)    if err != nil {        gLogger.Warn("啟動伺服器錯誤")    }    server.On("connection", func(so socketio.Socket) {        gLogger.Info("on connection")        so.Join("chat")        so.On("chat message", func(msg string) {            m := make(map[string]interface{})            m["a"] = "你好"            e := so.Emit("cn1111", m)            //這個沒有問題            fmt.Println("\n\n")            b := make(map[string]string)            b["u-a"] = "中文內容" //這個不能是中文            m["b-c"] = b            e = so.Emit("cn2222", m)            gLogger.Info(e)            gLogger.Info("emit:", so.Emit("chat message", msg))            so.BroadcastTo("chat", "chat message", msg)        })        // Socket.io acknowledgement example        // The return type may vary depending on whether you will return        // For this example it is "string" type        so.On("chat message with ack", func(msg string) string {            return msg        })        so.On("disconnection", func() {            gLogger.Info("on disconnect")        })    })    server.On("error", func(so socketio.Socket, err error) {        gLogger.Warn("ERROR: ", err)    })    http.Handle("/socket.io/", server)    http.Handle("/", http.FileServer(http.Dir("/Users/deer_mac/Downloads/go-socket.io-master/example/chat/Public")))    gLogger.Info("Serving at localhost:5000...")    http.ListenAndServe(":5000", nil)    deinitAll()}// GetCurFilename// Get current file name, without suffixfunc GetCurFilename() string {    _, fulleFilename, _, _ := runtime.Caller(0)    //fmt.Println(fulleFilename)    var filenameWithSuffix string    filenameWithSuffix = path.Base(fulleFilename)    //fmt.Println("filenameWithSuffix=", filenameWithSuffix)    var fileSuffix string    fileSuffix = path.Ext(filenameWithSuffix)    //fmt.Println("fileSuffix=", fileSuffix)    var filenameOnly string    filenameOnly = strings.TrimSuffix(filenameWithSuffix, fileSuffix)    //fmt.Println("filenameOnly=", filenameOnly)    return filenameOnly}//init for loggerfunc initLogger(){    var filenameOnly string    filenameOnly = GetCurFilename()    var logFilename string =  filenameOnly + ".log";    //gLogger = log4go.NewLogger()    gLogger = make(log4go.Logger)    //for console    //gLogger.AddFilter("stdout", log4go.INFO, log4go.NewConsoleLogWriter())    gLogger.AddFilter("stdout", log4go.INFO, log4go.NewConsoleLogWriter())    //for log file    if _, err := os.Stat(logFilename); err == nil {        //fmt.Printf("found old log file %s, now remove it\n", logFilename)        os.Remove(logFilename)    }    //gLogger.AddFilter("logfile", log4go.FINEST, log4go.NewFileLogWriter(logFilename, true))    gLogger.AddFilter("logfile", log4go.FINEST, log4go.NewFileLogWriter(logFilename, false))    gLogger.Info("Current time is : %s", time.Now().Format("15:04:05 MST 2006/01/02"))    return}

 

GO語言 --socket.io

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.