do you even need a multiplexer? The common patten is to run Accept in a loop that simply starts a new Go routine for every new accepted connection. You only need a multiplexer of your application protocol needs multiplexing inside an established TCP connection, either because there are multiple destinations or multiple streams inside a single connection.
On Saturday, August 20, 2022 at 10:31:34 PM UTC+2 ramki...@hotmail.com wrote: > Has anyone ever used a multiplexer <https://github.com/hashicorp/yamux>? > When creating a TCP server using multiplexer, I get an error [ERR] yamux: > Invalid protocol version: 102 when using Telnet to connect to the server. > > package main > > import ( > "fmt" > "net" > > "github.com/hashicorp/yamux" > ) > > func main() { > server() > } > > func server() { > > listener, _ := net.Listen("tcp", "0.0.0.0:1113") > for { > > // Accept a TCP connection > conn, err := listener.Accept() > if err != nil { > panic(err) > } > > // Setup server side of smux > session, err := yamux.Server(conn, nil) > if err != nil { > panic(err) > } > > // Accept a stream > stream, err := session.Accept() > if err != nil { > panic(err) > } > fmt.Println("DPOO") > > // Listen for a message > buf := make([]byte, 4) > stream.Read(buf) > stream.Close() > session.Close() > } > } > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/d8bca737-de31-4821-9bf9-96c8856762cen%40googlegroups.com.