2017-08-26 3 views
2

Websocketを使用してクライアントにブロードキャストメッセージを送信しようとしています。このコードを修正して、すべてのクライアントに正しくエラーメッセージを送信する方法WebSocket.Message.Sendへの引数でtype * websocket.Connの型としてccc(type int)を使用できません。

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!!!") 
    } 
} 

答えて

1

ないあなたがlllをどうしようとしているが、それを使用せずに、あなたのコードは、イベントがコンパイルされないべきかを確認してください。


rangeそれは反復のインデックスを割り当てられる:=の左側の可変1回の反復とスライス/アレイ上にする。だからあなたの場合cccはインデックスです。あなたが行うことができます

ことの一つは、次のとおりです。

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

しかし、あなたはおそらく、本当に、インデックスを削除し、最初の一つとして、すぐに次の2つの反復変数を使用して行うことができます_を持つ要素を取得されたいですかあなたがインデックスをまったく使用するつもりがない場合。

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

はもっとここで読む:https://golang.org/ref/spec#For_range

関連する問題