github.com/vmware/transport-go@v1.3.4/bridge/example_connector_broker_ws_test.go (about) 1 // Copyright 2019-2020 VMware, Inc. 2 // SPDX-License-Identifier: BSD-2-Clause 3 4 package bridge_test 5 6 import ( 7 "encoding/json" 8 "fmt" 9 "github.com/vmware/transport-go/bridge" 10 "github.com/vmware/transport-go/bus" 11 "github.com/vmware/transport-go/model" 12 ) 13 14 func Example_connectUsingBrokerViaWebSocket() { 15 16 // get a reference to the event bus. 17 b := bus.GetBus() 18 19 // create a broker connector configuration, using WebSockets. 20 config := &bridge.BrokerConnectorConfig{ 21 Username: "guest", 22 Password: "guest", 23 ServerAddr: "appfabric.vmware.com", 24 WebSocketConfig: &bridge.WebSocketConfig{WSPath: "/fabric"}, 25 UseWS: true, 26 STOMPHeader: map[string]string{ 27 "access-token": "test", 28 }, 29 } 30 31 // connect to broker. 32 c, err := b.ConnectBroker(config) 33 if err != nil { 34 fmt.Printf("unable to connect, error: %e", err) 35 } 36 37 // subscribe to our demo simple-stream 38 s, _ := c.Subscribe("/topic/simple-stream") 39 40 // set a counter 41 n := 0 42 43 // create a control chan 44 done := make(chan bool) 45 46 var listener = func() { 47 for { 48 // listen for incoming messages from subscription. 49 m := <-s.GetMsgChannel() 50 51 // unmarshal message. 52 r := &model.Response{} 53 d := m.Payload.([]byte) 54 json.Unmarshal(d, &r) 55 fmt.Printf("Message Received: %s\n", r.Payload.(string)) 56 57 n++ 58 59 // listen for 5 messages then stop. 60 if n >= 5 { 61 break 62 } 63 } 64 done <- true 65 } 66 67 // listen for incoming messages on subscription. 68 go listener() 69 70 <-done 71 72 c.Disconnect() 73 }