In general the websocket API works the same way as the polling API. Once you found an endpoint that provides the data in the format you are looking for you can apply it directly to the websocket connection.
Copy function LitenMFN (newsCallback) {
wsuri = 'wss://mfn.modfin.se/s.json' ;
console .log ( "WC:" , "connecting to" , wsuri);
var socket = new WebSocket (wsuri);
socket . onopen = function (event) {
console .log ( "WC:" , "socket is open" , event)
};
socket . onclose = function (event) {
console .log ( "WC:" , "socket was closed, reconnecting" , event);
LitenMFN ()
}
socket . onmessage = function (event) {
console .log ( "WC:" , "Got message" , event . data . length );
var newsItem = JSON .parse ( event .data);
newsCallback (newsItem)
}
}
Copy package mfn
import (
"log"
"net/url"
"github.com/gorilla/websocket"
"errors"
)
func Listen (host string ) (items <- chan [] byte , closer chan struct {}, errs <- chan error ) {
items = make ( chan [] byte , 10 )
closer = make ( chan struct {})
errs = make ( chan error )
u := url . URL {Scheme: "wss" , Host: host, Path: "/s.json" }
c, _, err := websocket.DefaultDialer. Dial (u. String (), nil )
if err != nil {
errs <- err
close (closer)
return
}
go func () {
select {
case <- closer:
c. Close ()
}
}()
go func () {
defer close (closer)
for {
_, message, err := c. ReadMessage ()
if err != nil {
errs <- err
return
}
log. Printf ( "recv: %s " , message)
items <- message
}
}()
return
}