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  }