在Websocket中使用频道

如果我在主要或func家庭中的任何地方使用chan,则该应用程序会运行,但实际上并不能正常工作。没有引发任何错误,但是,它将不起作用。如果我删除了频道引用,它将恢复正常工作。通过在结构或全局通道中使用chan,应用程序将停止运行。


在一个GET请求时,它返回h.Message从func home 由代码添加任何频道,GET请求不会返回消息。


https://play.golang.org/p/-ZVcLhZRRRG


package main


import (

    "fmt"

    "net/http"


    "github.com/gorilla/websocket"

    // _ "github.com/go-sql-driver/mysql"

)


type WMessage struct {

    Message string `json:"message"`

    ch      chan string

}


var upgrader = websocket.Upgrader{

    ReadBufferSize:  1024,

    WriteBufferSize: 1024,

    CheckOrigin: func(r *http.Request) bool {

        return true

    },

}


var Chann chan string


func (h *WMessage) home(w http.ResponseWriter, r *http.Request) {

    h.Message = "hey this is the message from home"


    fmt.Fprintln(w, h.Message)

    fmt.Println(<-h.ch)

}


func main() {

    hom := &WMessage{}


    hom.ch = make(chan string)


    hom.ch <- "message sent"


    http.HandleFunc("/", hom.home)

    err := http.ListenAndServe(":3000", nil)

    if err != nil {

        fmt.Println("there was an error -> ", err)

    }

}



饮歌长啸
浏览 301回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go