GOLANG WebSocket как с клиента на golang отправить сообщение на сервер
Я использую клиент и сервер отсюда: github.com/gorilla/websocket/tree/master/examples/echo
=================
UPD:
Немножко поменяю вопрос, чтобы было понятно. Сейчас клиент шлет такие сообщения и сервер их принимает

Вопрос: Как мне отправить не тики, а сообщение "Hello World"?
Код клиента:
// Copyright 2015 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build ignore
// +build ignore
package main
import (
"flag"
"log"
"net/url"
"os"
"os/signal"
"time"
"github.com/gorilla/websocket"
)
var addr = flag.String("addr", "localhost:8080", "http service address")
func main() {
flag.Parse()
log.SetFlags(0)
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)
u := url.URL{Scheme: "ws", Host: *addr, Path: "/echo"}
log.Printf("connecting to %s", u.String())
c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
if err != nil {
log.Fatal("dial:", err)
}
defer c.Close()
done := make(chan struct{})
go func() {
defer close(done)
for {
_, message, err := c.ReadMessage()
if err != nil {
log.Println("read:", err)
return
}
log.Printf("recv: %s", message)
}
}()
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
for {
select {
case <-done:
return
case t := <-ticker.C:
err := c.WriteMessage(websocket.TextMessage, []byte(t.String()))
if err != nil {
log.Println("write:", err)
return
}
case <-interrupt:
log.Println("interrupt")
// Cleanly close the connection by sending a close message and then
// waiting (with timeout) for the server to close the connection.
err := c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""))
if err != nil {
log.Println("write close:", err)
return
}
select {
case <-done:
case <-time.After(time.Second):
}
return
}
}
}
Грубо говоря меня нужен клиент websocket на golang который отправит на сервер "Hello World"
Ответы (1 шт):
Автор решения: Екатерина Корчагина
→ Ссылка
Использую в итоге этот клиент, тут хотя бы понятно как хелло ворд отправить: https://github.com/sacOO7/GoWebsocket/blob/master/examples/gowebsocket/main.go
package main
import (
"log"
"github.com/sacOO7/gowebsocket"
"os"
"os/signal"
)
func main() {
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)
socket := gowebsocket.New("ws://echo.websocket.org/");
socket.ConnectionOptions = gowebsocket.ConnectionOptions{
//Proxy: gowebsocket.BuildProxy("http://example.com"),
UseSSL: false,
UseCompression: false,
Subprotocols: [] string{"chat", "superchat"},
}
socket.RequestHeader.Set("Accept-Encoding", "gzip, deflate, sdch")
socket.RequestHeader.Set("Accept-Language", "en-US,en;q=0.8")
socket.RequestHeader.Set("Pragma", "no-cache")
socket.RequestHeader.Set("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36")
socket.OnConnectError = func(err error, socket gowebsocket.Socket) {
log.Fatal("Recieved connect error ", err)
};
socket.OnConnected = func(socket gowebsocket.Socket) {
log.Println("Connected to server");
};
socket.OnTextMessage = func(message string, socket gowebsocket.Socket) {
log.Println("Recieved message " + message)
};
socket.OnPingReceived = func(data string, socket gowebsocket.Socket) {
log.Println("Recieved ping " + data)
};
socket.OnDisconnected = func(err error, socket gowebsocket.Socket) {
log.Println("Disconnected from server ")
return
};
socket.Connect()
i := 0
for (i < 10) {
socket.SendText("This is my sample test message")
i++
}
for {
select {
case <-interrupt:
log.Println("interrupt")
socket.Close()
return
}
}
}