gpt4 book ai didi

go - 不能在 websocket.Message.Send 的参数中使用 ccc(int 类型)作为 *websocket.Conn 类型

转载 作者:IT王子 更新时间:2023-10-29 01:44:38 25 4
gpt4 key购买 nike

我正在尝试使用 websockets 向客户端发送广播消息。如何修复此代码以正确地向所有客户端发送消息并且没有该错误?

package main

import (
"fmt"
"golang.org/x/net/websocket"
"net/http"
)

var connections []websocket.Conn

func main() {
fmt.Println("vim-go")
http.Handle("/", websocket.Handler(Server))
err := http.ListenAndServe(":8888", nil)
if err != nil {
panic("ListenAndServe: " + err.Error())
}
}

func Server(ws *websocket.Conn) {
lll := append(connections, *ws)
var message string
websocket.Message.Receive(ws, &message)
fmt.Println(message)
for ccc := range connections {
websocket.Message.Send(ccc, "Another connection!!!")
}
}

最佳答案

不确定你想用 lll 做什么,但如果不使用它,你的代码应该不会编译。


range:= 左侧使用单个迭代变量遍历 slice/数组时,它将被分配迭代。所以在你的情况下 ccc 是索引。

您可以做的一件事是:

for ccc := range connections {
websocket.Message.Send(connections[ccc], "Another connection!!!")
}

但您可能真正想要的是,删除索引并立即获取元素,如果您不打算使用,您可以使用两个迭代变量将 _ 作为第一个索引。

for _, ccc := range connections {
websocket.Message.Send(ccc, "Another connection!!!")
}

在这里阅读更多:https://golang.org/ref/spec#For_range

关于go - 不能在 websocket.Message.Send 的参数中使用 ccc(int 类型)作为 *websocket.Conn 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45891799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com