From 9584959f2354e0b313283e1a5c9c4877e54c924e Mon Sep 17 00:00:00 2001 From: Barpfotenbaer Date: Mon, 7 Sep 2020 13:02:32 +0200 Subject: [PATCH] =?UTF-8?q?WsSend=20und=20WsReceive=20([]byte)=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nhooyrioWebsocketAddons.go | 52 ++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/nhooyrioWebsocketAddons/nhooyrioWebsocketAddons.go b/nhooyrioWebsocketAddons/nhooyrioWebsocketAddons.go index 5e15127..dfc775c 100755 --- a/nhooyrioWebsocketAddons/nhooyrioWebsocketAddons.go +++ b/nhooyrioWebsocketAddons/nhooyrioWebsocketAddons.go @@ -8,6 +8,8 @@ import ( ) func WsjsonSend(ctx context.Context, conn *websocket.Conn, sendval interface{}) (err error, receiveval interface{}) { + err = nil + //Send err = wsjson.Write(ctx, conn, sendval) if err != nil { @@ -20,8 +22,9 @@ func WsjsonSend(ctx context.Context, conn *websocket.Conn, sendval interface{}) return err, nil } - return nil, receiveval + return } + func WsjsonReceive(ctx context.Context, conn *websocket.Conn, dosth func(interface{}) interface{}) (err error, receiveval interface{}) { var sendval interface{} err = nil @@ -45,3 +48,50 @@ func WsjsonReceive(ctx context.Context, conn *websocket.Conn, dosth func(interfa return } + +func WsSend(ctx context.Context, conn *websocket.Conn, sendval []byte, mts websocket.MessageType) (err error, receiveval []byte) { + var mtr websocket.MessageType + err = nil + + //Send + err = conn.Write(ctx, mts, sendval) + if err != nil { + return err, nil + } + + //Receive + mtr, receiveval, err = conn.Read(ctx) + if err != nil { + return err, nil + } + + if mtr != mts { //Dürfte eigentlich niemals eintreten, denn MessageType mtr und mts sind identisch, sofern auf der anderen Seite WsReceive lauscht. + panic("websocket.MessageType inconsistency") + } + + return +} + +func WsReceive(ctx context.Context, conn *websocket.Conn, dosth func([]byte) []byte) (err error, receiveval []byte, mtr websocket.MessageType) { + var sendval []byte + err = nil + + //Receive + mtr, receiveval, err = conn.Read(ctx) + if err != nil { + return + } + if dosth != nil { + sendval = dosth(receiveval) + } else { + sendval = []byte{} //It doesn't make sense to return unprocess receiveval + } + + //Send + err = conn.Write(ctx, mtr, sendval) + if err != nil { + return + } + + return +}