go语言routine循环推送数据到websocket客户端出现的问题
请各位帮忙看下,我一个routine是请求新浪的股票行情的数据的,另外一个routine是开websocket服务同时推送到客户端的,但是这个好像有问题,客户端没办法收到数据,小弟初学go两天,求高手指教应该怎么处理感激不尽!!!
import (
"io/ioutil"
"log"
"net/http"
"github.com/googollee/go-socket.io"
"fmt"
"time"
)
func startServer(ch chan string) {
server, err := socketio.NewServer(nil)
if err != nil {
log.Fatal(err)
}
server.On("connection", func(so socketio.Socket) {
log.Println("on connection")
so.Join("chat")
so.On("disconnection", func() {
log.Println("on disconnect")
})
for{
data := <-ch
so.BroadcastTo("chat","Broadcast",data)
}
})
server.On("error", func(so socketio.Socket, err error) {
log.Println("error:", err)
})
http.Handle("/socket.io/", server)
log.Println("服务已启动并且使用 localhost:5000...")
log.Fatal(http.ListenAndServe("0.0.0.0:5000", nil))
}
func main() {
ch := make(chan string)
go stockapi(ch)
startServer(ch)
}
func stockapi(ch chan string) {
var code string
code = "sz000001"
//resp, err := http.Get(fmt.Sprintf("%s%s", "http://hq.sinajs.cn/list=", code))
for {
resp, err := http.Get("http://hq.sinajs.cn/list="+code)
if err != nil {
fmt.Println("请求报错")
}
//析构函数关闭Body请求
defer resp.Body.Close()
//读取相应body
body, err := ioutil.ReadAll(resp.Body)
//打印相应body
ch <- fmt.Sprintf(string(body))
time.Sleep(time.Second*1)
}
}```
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论