Best K6 code snippet using ws.closeConnection
main.go
Source:main.go  
1package main2import (3	"go-stream/api"4	"go-stream/api/types"5	"go-stream/api/web_socket"6	"time"7)8const apiKey = "550ECBDB-B1EF-42FE-8702-19CCAD9C2A7C"9func main() {10	TestSendHello()11	//TestHeartbeat()12	//TestReconnect()13	//TestVolumeError()14	//TestWebSocket()15}16func TestWebSocket() {17	printHeader("TestWebSocket!")18	println(" * Connect!!")19	url := "ws://ws-sandbox.coinapi.io/v1/"20	ws := web_socket.NewWebSocket(url)21	println(" * GetHello: Single data type!")22	hello := getHello(false, false)23	b, _ := hello.GetJSON()24	_ = ws.WriteByteMessage(b)25	errHandler := logError26	msgHandler := printRawMsg27	err := ws.ReadByteMessages(msgHandler, errHandler)28	if err != nil {29		logError(err)30	}31	println(" * Wait!")32	time.Sleep(3 * time.Second)33	println(" * Close!")34	_ = ws.Close()35}36func TestVolumeError() {37	printHeader("TestVolumeError!")38	// Replicates error thrown when requesting volume data:39	//websocket: close 1006 (abnormal closure): unexpected EOF40	println(" * NewSDK!")41	sdk := api.NewSDK(apiKey)42	// verbose switches off console print of heartbeat & reconnect messages43	sys := getSysInvokes(false)44	println(" * SetErrorInvoke!")45	sdk.SetErrorInvoke(sys.ErrorInvoke)46	println(" * SetHeartBeatInvoke!")47	sdk.SetHeartBeatInvoke(sys.HeartBeatInvoke)48	println(" * SetReconnectInvoke!")49	sdk.SetReconnectInvoke(sys.ReconnectInvoke)50	println(" * SetVolumeInvoke!")51	VolInvoke := GetInvokeFunction(types.VOLUME)52	sdk.SetVolumeInvoke(VolInvoke)53	println(" * GetHello: Volume only!")54	hello := getVolumeHello(false)55	println(" * SendHello: Requesting Volume type only !")56	_ = sdk.SendHello(hello)57	println(" * Wait for messages!")58	time.Sleep(time.Second * 5)59	println(" * CloseConnection!")60	_ = sdk.CloseConnection()61	println("Goodbye!")62}63func TestSendHello() {64	printHeader("TestSendHello!")65	println(" * NewSDK!")66	sdk := api.NewSDK(apiKey)67	// verbose switches off console print of heartbeat & reconnect messages68	sys := getSysInvokes(false)69	println(" * SetErrorInvoke!")70	sdk.SetErrorInvoke(sys.ErrorInvoke)71	println(" * SetHeartBeatInvoke!")72	sdk.SetHeartBeatInvoke(sys.HeartBeatInvoke)73	println(" * SetReconnectInvoke!")74	sdk.SetReconnectInvoke(sys.ReconnectInvoke)75	println(" * SetOHLCVInvoke!")76	OHLCVInvoke := GetInvokeFunction(types.OHLCV)77	sdk.SetOHLCVInvoke(OHLCVInvoke)78	println(" * SetTradesInvoke!")79	tradeInvoke := GetInvokeFunction(types.TRADE)80	sdk.SetTradesInvoke(tradeInvoke)81	println(" * SetQuoteInvoke!")82	quoteInvoke := GetInvokeFunction(types.QUOTE)83	sdk.SetQuoteInvoke(quoteInvoke)84	println(" * SetExRateInvoke!")85	exRateInvoke := GetInvokeFunction(types.EXCHANGERATE)86	sdk.SetExRateInvoke(exRateInvoke)87	println(" * SetBookInvoke!")88	bookInvoke := GetInvokeFunction(types.BOOK_L2_FULL)89	sdk.SetBookInvoke(bookInvoke)90	println(" * GetHello: Single data type!")91	hello := getHello(false, false)92	println(" * SendHello: Single data type!")93	_ = sdk.SendHello(hello)94	println(" * Wait for messages!")95	time.Sleep(time.Second * 5)96	println(" * GetHello: Expanded data types!")97	hello = getHello(true, false)98	println(" * SendHello: Expanded data types!")99	_ = sdk.SendHello(hello)100	println(" * Wait for messages!")101	time.Sleep(time.Second * 5)102	println(" * CloseConnection!")103	_ = sdk.CloseConnection()104	println("Goodbye!")105}106func TestReconnect() {107	// This test only process OHLCV as no other invoke functions are set!108	printHeader("TestReconnect!")109	println(" * NewSDK!")110	sdk := api.NewSDK(apiKey)111	sys := getSysInvokes(true)112	println(" * SetErrorInvoke!")113	sdk.SetErrorInvoke(sys.ErrorInvoke)114	println(" * SetHeartBeatInvoke!")115	sdk.SetHeartBeatInvoke(sys.HeartBeatInvoke)116	println(" * SetReconnectInvoke!")117	sdk.SetReconnectInvoke(sys.ReconnectInvoke)118	println(" * SetOHLCVInvoke!")119	OHLCVInvoke := GetInvokeFunction(types.OHLCV)120	sdk.SetOHLCVInvoke(OHLCVInvoke)121	println(" * GetHello: Single data type!")122	hello := getHello(false, true)123	println(" * SendHello: Single data type!")124	_ = sdk.SendHello(hello)125	println(" * Wait for messages!")126	time.Sleep(time.Second * 10)127	println("******************")128	println("* Hard Reconnect *")129	println("******************")130	_ = sdk.Reconnect()131	println(" * Wait for messages!")132	time.Sleep(time.Second * 5)133	println(" * CloseConnection!")134	_ = sdk.CloseConnection()135	println("Goodbye!")136}137func TestHeartbeat() {138	// This test only process OHLCV as no other invoke functions are set!139	printHeader("TestHeartbeat!")140	println(" * NewSDK!")141	sdk := api.NewSDK(apiKey)142	sys := getSysInvokes(true)143	println(" * SetErrorInvoke!")144	sdk.SetErrorInvoke(sys.ErrorInvoke)145	println(" * SetHeartBeatInvoke!")146	sdk.SetHeartBeatInvoke(sys.HeartBeatInvoke)147	println(" * SetReconnectInvoke!")148	sdk.SetReconnectInvoke(sys.ReconnectInvoke)149	println(" * SetOHLCVInvoke!")150	OHLCVInvoke := GetInvokeFunction(types.OHLCV)151	sdk.SetOHLCVInvoke(OHLCVInvoke)152	println(" * GetHello: Heartbeat!")153	hello := getHello(false, true)154	println(" * SendHello: Heartbeat!")155	_ = sdk.SendHello(hello)156	println(" * Wait for messages!")157	time.Sleep(time.Second * 10)158	println(" * CloseConnection!")159	_ = sdk.CloseConnection()160	println("Goodbye!")161}162func printHeader(msg string) {163	println()164	println("=====================")165	println("Start: " + msg)166	println("=====================")167	println()168}...frontend_handler.go
Source:frontend_handler.go  
...36		log.Errorf("Error during upgrade: [%v]", err)37		http.Error(rw, "Failed to upgrade connection.", 500)38		return39	}40	defer closeConnection(ws)41	msgKey, respChannel, err := h.backend.initializeClient(hostKey)42	if err != nil {43		log.Errorf("Error during initialization: [%v]", err)44		closeConnection(ws)45		return46	}47	defer h.backend.closeConnection(hostKey, msgKey)48	// Send response messages to client49	go func() {50		defer closeConnection(ws)51		for {52			message, ok := <-respChannel53			if !ok {54				return55			}56			switch message.Type {57			case common.Body:58				var data []byte59				var e error60				msgType := 161				if binary {62					msgType = 263					data, e = base64.StdEncoding.DecodeString(message.Body)64					if e != nil {65						log.Errorf("Error decoding message: %v", e)66						closeConnection(ws)67						continue68					}69				} else {70					data = []byte(message.Body)71				}72				ws.SetWriteDeadline(time.Now().Add(10 * time.Second))73				if e := ws.WriteMessage(msgType, data); e != nil {74					closeConnection(ws)75				}76			case common.Close:77				closeConnection(ws)78			}79		}80	}()81	url := req.URL.String()82	if err = h.backend.connect(hostKey, msgKey, url); err != nil {83		return84	}85	// Send request messages to backend86	for {87		msgType, msg, err := ws.ReadMessage()88		if err != nil {89			return90		}91		var data string92		if binary {93			data = base64.StdEncoding.EncodeToString(msg)94		} else {95			data = string(msg)96		}97		if msgType == websocket.BinaryMessage || msgType == websocket.TextMessage {98			if err = h.backend.send(hostKey, msgKey, data); err != nil {99				return100			}101		}102	}103}104func (h *FrontendHandler) auth(req *http.Request) (*jwt.Token, string, error) {105	token, tokenParam, err := parseToken(req, h.parsedPublicKey)106	if err != nil {107		if tokenParam == "" {108			return nil, "", noAuthError{err: err.Error()}109		}110		return nil, "", fmt.Errorf("Error parsing token: %v. Token parameter: %v", err, tokenParam)111	}112	if !token.Valid {113		return nil, "", fmt.Errorf("Token not valid. Token parameter: %v", tokenParam)114	}115	hostUUID, found := token.Claims["hostUuid"]116	if found {117		if hostKey, ok := hostUUID.(string); ok && h.backend.hasBackend(hostKey) {118			return token, hostKey, nil119		}120	}121	return nil, "", fmt.Errorf("Invalid backend host requested: %v", hostUUID)122}123func closeConnection(ws *websocket.Conn) {124	ws.WriteControl(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""), time.Now().Add(time.Second))125	ws.Close()126}127func parseToken(req *http.Request, parsedPublicKey interface{}) (*jwt.Token, string, error) {128	tokenString := ""129	if authHeader := req.Header.Get("Authorization"); authHeader != "" {130		if len(authHeader) > 6 && strings.EqualFold("bearer", authHeader[0:6]) {131			tokenString = strings.Trim(authHeader[7:], " ")132		}133	}134	if tokenString == "" {135		tokenString = req.URL.Query().Get("token")136	}137	if tokenString == "" {...subscribe.go
Source:subscribe.go  
...58	var response string59	err := websocket.Message.Receive(s.ws, &response)60	if err != nil { // if call Close() or sever stopped, connect closed, can not receive message61		fmt.Println("receive publish message:  ", err)62		s.closeConnection()63		return nil, true64	}65	reply := new(publishInfo)66	err = json.Unmarshal([]byte(response), reply)67	if err != nil {68		fmt.Println("Can not decode publish data:  ", err)69		s.closeConnection()70		return nil, true71	}72	if reply.Params.Result == nil { // if call Unsubscribe(), connect closed, receive message is nil73		s.closeConnection()74		return nil, true75	}76	return reply.Params.Result, false77}78func (s *Subscribe) Unsubscribe(request string) error {79	if err := websocket.Message.Send(s.ws, request); err != nil {80		return fmt.Errorf("unsubscribe error: %s", err)81	}82	return nil83}84func (s *Subscribe) Close() error {85	s.closeConnection()86	return s.ws.Close()87}88func (s *Subscribe) closeConnection() {89	s.Stopped <- true90}...closeConnection
Using AI Code Generation
1import (2var upgrader = websocket.Upgrader{3}4func main() {5	http.HandleFunc("/ws", wsEndpoint)6	http.ListenAndServe(":8080", nil)7}8func wsEndpoint(w http.ResponseWriter, r *http.Request) {9	upgrader.CheckOrigin = func(r *http.Request) bool { return true }10	ws, err := upgrader.Upgrade(w, r, nil)11	if err != nil {12		fmt.Println(err)13	}14	fmt.Println("Client Successfully Connected...")15	reader(ws)16}17func reader(conn *websocket.Conn) {18	for {19		messageType, p, err := conn.ReadMessage()20		if err != nil {21			fmt.Println(err)22		}23		fmt.Println(string(p))24		if err := conn.WriteMessage(messageType, p); err != nil {25			fmt.Println(err)26		}27		time.Sleep(time.Second * 1)28		conn.Close()29	}30}closeConnection
Using AI Code Generation
1import (2func main() {3	u := url.URL{Scheme: "ws", Host: "localhost:8080", Path: "/ws"}4	fmt.Println("connecting to", u.String())5	c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)6	if err != nil {7		fmt.Println("error in connection", err)8	}9	defer c.Close()10	fmt.Println("connection established")11}closeConnection
Using AI Code Generation
1import (2func main() {3	if err != nil {4		fmt.Println("Error in dialing the websocket connection")5	}6	defer ws.Close()7	err = ws.WriteMessage(websocket.TextMessage, []byte("Hello World"))8	if err != nil {9		fmt.Println("Error in sending message to the server")10	}11	ws.Close()12	err = ws.WriteMessage(websocket.TextMessage, []byte("Hello World"))13	if err != nil {14		fmt.Println("Error in sending message to the server")15	}16	time.Sleep(5 * time.Second)17}closeConnection
Using AI Code Generation
1import (2func main() {3	http.HandleFunc("/websockets", func(w http.ResponseWriter, r *http.Request) {4		ws, err := websocket.Upgrade(w, r, nil, 1024, 1024)5		if _, ok := err.(websocket.HandshakeError); ok {6			http.Error(w, "Not a websocket handshake", 400)7		} else if err != nil {8		}9		ws.Close()10	})11	fmt.Println("Server started on localhost:8000")12	http.ListenAndServe(":8000", nil)13}closeConnection
Using AI Code Generation
1import (2func main() {3	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {4		upgrader := websocket.Upgrader{5			CheckOrigin: func(r *http.Request) bool {6			},7		}8		conn, err := upgrader.Upgrade(w, r, nil)9		if err != nil {10			log.Fatal(err)11		}12		defer conn.Close()13		_, msg, err := conn.ReadMessage()14		if err != nil {15			log.Fatal(err)16		}17		fmt.Println(string(msg))18	})19	log.Fatal(http.ListenAndServe(":8080", nil))20}21import (22func main() {23	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {24		upgrader := websocket.Upgrader{25			CheckOrigin: func(r *http.Request) bool {26			},27		}28		conn, err := upgrader.Upgrade(w, r, nil)29		if err != nil {30			log.Fatal(err)31		}32		defer conn.Close()33		_, msg, err := conn.ReadMessage()34		if err != nil {35			log.Fatal(err)36		}37		fmt.Println(string(msg))38	})39	log.Fatal(http.ListenAndServe(":8080", nil))40}closeConnection
Using AI Code Generation
1import (2func main() {3	ws.Connect()4	ws.Close()5	fmt.Println("Connection closed")6}7import (8func main() {9	ws.Connect()10	ws.Send("Hello World")11	ws.Close()12}13import (14func main() {15	ws.Connect()16	ws.Send("Hello World")17	ws.OnMessage(func(message string) {18		fmt.Println(message)19	})20	ws.Close()21}22import (23func main() {24	ws.Connect()25	ws.Send("Hello World")26	ws.OnMessage(func(message string) {27		fmt.Println(message)28	})29	ws.OnError(func(err error) {30		fmt.Println(err)31	})32	ws.Close()33}34import (35func main() {36	ws.Connect()37	ws.Send("Hello World")38	ws.OnMessage(func(message string) {39		fmt.Println(message)40	})41	ws.OnError(func(err error) {42		fmt.Println(err)43	})44	ws.OnOpen(func() {45		fmt.Println("Connection Opened")46	})47	ws.Close()48}49import (50func main() {51	ws.Connect()52	ws.Send("Hello World")53	ws.OnMessage(func(message string) {54		fmt.Println(message)55	})56	ws.OnError(func(err error) {57		fmt.Println(err)58	})59	ws.OnOpen(func() {60		fmt.Println("Connection Opened")61	})closeConnection
Using AI Code Generation
1import (2func main() {3	ws := ws.New()4	fmt.Println("Connection Established")5	ws.CloseConnection()6	fmt.Println("Connection Closed")7}closeConnection
Using AI Code Generation
1import(2func main(){3	ws.init()4	for i:=0;i<10;i++{5		ws.send("hello")6		time.Sleep(time.Second)7	}8	ws.closeConnection()9}10import(11func main(){12	ws.init()13	for i:=0;i<10;i++{14		ws.send("hello")15		time.Sleep(time.Second)16	}17	ws.closeConnection()18}19import(20func main(){21	ws.init()22	for i:=0;i<10;i++{23		ws.send("hello")24		time.Sleep(time.Second)25	}26	ws.closeConnection()27}28import(29func main(){30	ws.init()31	for i:=0;i<10;i++{32		ws.send("hello")33		time.Sleep(time.Second)34	}35	ws.closeConnection()36}37import(38func main(){39	ws.init()40	for i:=0;i<10;i++{41		ws.send("hello")42		time.Sleep(time.Second)43	}44	ws.closeConnection()45}closeConnection
Using AI Code Generation
1import (2func main() {3	ws := websocket.New()4	ws.Send("Hello from client")5	fmt.Println(ws.Receive())6	ws.CloseConnection()7	c := make(chan os.Signal)8	signal.Notify(c, os.Interrupt, syscall.SIGTERM)9}Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
