Connect
Market Data
- Server URL:
wss://spot-stream.goonus.io/market
- Subscribe Event:
sub
(accepts one or more topics) - Unsubscribe Event:
unsub
(accepts one or more topics)
Example Usage
- ReactJS
- React Native
- Node.js
- Java
- C#
- Python
- Go
import React, { useEffect } from 'react';
import { io } from 'socket.io-client';
function MarketData() {
useEffect(() => {
const url = 'wss://spot-stream.goonus.io';
const marketSocket = io(url + '/market', { transports: ["websocket"], reconnection: true });
marketSocket.on('connect', () => {
marketSocket.emit('sub', 'BTC_USDT@ticker');
marketSocket.emit('sub', ['SOL_USDT@ticker', 'TON_USDT@ticker', 'ETH_USDT@ticker']);
setTimeout(() => {
marketSocket.emit('unsub', 'BTC_USDT@ticker');
marketSocket.emit('unsub', ['SOL_USDT@ticker', 'ETH_USDT@ticker']);
}, 10000);
});
marketSocket.on('message', (message) => {
console.log('New message from market:', message);
});
return () => {
marketSocket.disconnect();
};
}, []);
return <div>Market Data Streaming</div>;
}
export default MarketData;
import React, { useEffect } from 'react';
import { Text, View } from 'react-native';
import { io } from 'socket.io-client';
const MarketData = () => {
useEffect(() => {
const url = 'wss://spot-stream.goonus.io';
const marketSocket = io(url + '/market', { transports: ["websocket"], reconnection: true });
marketSocket.on('connect', () => {
marketSocket.emit('sub', 'BTC_USDT@ticker');
marketSocket.emit('sub', ['SOL_USDT@ticker', 'TON_USDT@ticker', 'ETH_USDT@ticker']);
setTimeout(() => {
marketSocket.emit('unsub', 'BTC_USDT@ticker');
marketSocket.emit('unsub', ['SOL_USDT@ticker', 'ETH_USDT@ticker']);
}, 10000);
});
marketSocket.on('message', (message) => {
console.log('New message from market:', message);
});
return () => {
marketSocket.disconnect();
};
}, []);
return (
<View>
<Text>Market Data Streaming</Text>
</View>
);
};
export default MarketData;
const io = require('socket.io-client');
(function run() {
const url = 'wss://spot-stream.goonus.io';
const marketSocket = io(url + '/market', { transports: ["websocket"], reconnection: true });
marketSocket.on('connect', () => {
marketSocket.emit('sub', 'BTC_USDT@ticker');
marketSocket.emit('sub', ['SOL_USDT@ticker', 'TON_USDT@ticker', 'ETH_USDT@ticker']);
setTimeout(() => {
marketSocket.emit('unsub', 'BTC_USDT@ticker');
marketSocket.emit('unsub', ['SOL_USDT@ticker', 'ETH_USDT@ticker']);
}, 10000);
});
marketSocket.on('message', (message) => {
console.log('New message from market:', message);
});
})();
import io.socket.client.IO;
import io.socket.client.Socket;
public class MarketSocket {
public static void main(String[] args) {
try {
String url = "wss://spot-stream.goonus.io/market";
Socket marketSocket = IO.socket(url);
marketSocket.on(Socket.EVENT_CONNECT, args1 -> {
marketSocket.emit("sub", "BTC_USDT@ticker");
marketSocket.emit("sub", new String[]{"SOL_USDT@ticker", "TON_USDT@ticker", "ETH_USDT@ticker"});
new java.util.Timer().schedule(new java.util.TimerTask() {
@Override
public void run() {
marketSocket.emit("unsub", "BTC_USDT@ticker");
marketSocket.emit("unsub", new String[]{"SOL_USDT@ticker", "ETH_USDT@ticker"});
}
}, 10000);
});
marketSocket.on("message", args1 -> System.out.println("New message from market: " + args1[0]));
marketSocket.connect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
using System;
using Quobject.SocketIoClientDotNet.Client;
class Program {
static void Main(string[] args) {
var url = "wss://spot-stream.goonus.io/market";
var marketSocket = IO.Socket(url);
marketSocket.On(Socket.EVENT_CONNECT, () => {
marketSocket.Emit("sub", "BTC_USDT@ticker");
marketSocket.Emit("sub", new string[] { "SOL_USDT@ticker", "TON_USDT@ticker", "ETH_USDT@ticker" });
System.Threading.Tasks.Task.Delay(10000).ContinueWith(t => {
marketSocket.Emit("unsub", "BTC_USDT@ticker");
marketSocket.Emit("unsub", new string[] { "SOL_USDT@ticker", "ETH_USDT@ticker" });
});
});
marketSocket.On("message", data => Console.WriteLine("New message from market: " + data));
}
}
import socketio
sio = socketio.Client(ssl_verify=False)
@sio.on('connect', namespace='/market')
def connect():
print(f"Connected to market namespace {sio.eio.sid}")
sio.emit('sub', 'BTC_USDT@deep', namespace='/market')
@sio.on('message', namespace='/market')
def message(data):
print('New message from market:', data)
@sio.event
def connect_error(error):
print('Connection to market failed:', error)
@sio.event
def reconnect(attempt_number):
print(f"Reconnected to the server after {attempt_number} attempts")
@sio.event
def disconnect(reason):
print(f"Disconnected from the server due to {reason}")
sio.connect('wss://spot-stream.goonus.io', namespaces=['/market'], transports=['websocket'])
sio.wait()
package main
import (
"fmt"
"time"
socketio "github.com/googollee/go-socket.io"
)
func main() {
client, err := socketio.NewClient("wss://spot-stream.goonus.io/market")
if err != nil {
panic(err)
}
client.OnConnect("/", func() {
fmt.Println("Connected to server")
client.Emit("sub", "BTC_USDT@ticker")
client.Emit("sub", []string{"SOL_USDT@ticker", "TON_USDT@ticker", "ETH_USDT@ticker"})
time.AfterFunc(10*time.Second, func() {
client.Emit("unsub", "BTC_USDT@ticker")
client.Emit("unsub", []string{"SOL_USDT@ticker", "ETH_USDT@ticker"})
})
})
client.On("message", func(data string) {
fmt.Println("New message from market:", data)
})
client.Run()
}
User Data
- Server URL:
wss://spot-stream.goonus.io/user
- Authentication: Provide either
token
(session-token) orapi_key
in the connectionauth
object.
Example Usage
- ReactJS
- React Native
- Node.js
- Java
- C#
- Python
- Go
import React, { useEffect } from 'react';
import { io } from 'socket.io-client';
function UserData() {
useEffect(() => {
const url = 'wss://spot-stream.goonus.io';
const userSocket = io(url + '/user', {
auth: {
token: "xxx",
// api_key: "xxx"
},
transports: ["websocket"],
reconnection: true
});
userSocket.on('connect', () => {
console.log('Connected to user namespace');
});
userSocket.on('message', (message) => {
console.log('New message: ', message);
});
return () => {
userSocket.disconnect();
};
}, []);
return <div>User Data Streaming</div>;
}
export default UserData;
import React, { useEffect } from 'react';
import { Text, View } from 'react-native';
import { io } from 'socket.io-client';
const UserData = () => {
useEffect(() => {
const url = 'wss://spot-stream.goonus.io';
const userSocket = io(url + '/user', {
auth: {
token: "xxx",
// api_key: "xxx"
},
transports: ["websocket"],
reconnection: true
});
userSocket.on('connect', () => {
console.log('Connected to user namespace');
});
userSocket.on('message', (message) => {
console.log('New message: ', message);
});
return () => {
userSocket.disconnect();
};
}, []);
return (
<View>
<Text>User Data Streaming</Text>
</View>
);
};
export default UserData;
const io = require('socket.io-client');
(function run() {
const url = 'wss://spot-stream.goonus.io';
const userSocket = io(url + '/user', {
auth: {
token: "xxx"
// api_key: "xxx"
},
transports: ["websocket"],
reconnection: true
});
userSocket.on('connect', () => {
console.log('Connected to user namespace');
});
userSocket.on('message', (message) => {
console.log('New message: ', message);
});
})();
import io.socket.client.IO;
import io.socket.client.Socket;
public class UserSocket {
public static void main(String[] args) {
try {
String url = "wss://spot-stream.goonus.io/user";
IO.Options options = IO.Options.builder()
.setAuth(Map.of("token", "xxx")) // or "api_key": "xxx"
.build();
Socket userSocket = IO.socket(url, options);
userSocket.on(Socket.EVENT_CONNECT, args1 -> {
System.out.println("Connected to user namespace");
});
userSocket.on("message", args1 -> {
System.out.println("New message: " + args1[0]);
});
userSocket.connect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
using System;
using Quobject.SocketIoClientDotNet.Client;
class Program {
static void Main(string[] args) {
var url = "wss://spot-stream.goonus.io/user";
var userSocket = IO.Socket(url, new IO.Options {
Auth = new System.Collections.Generic.Dictionary<string, string> {
{ "token", "xxx" }, // or { "api_key", "xxx" }
}
});
userSocket.On(Socket.EVENT_CONNECT, () => {
Console.WriteLine("Connected to user namespace");
});
userSocket.On("message", data => {
Console.WriteLine("New message: " + data);
});
}
}
import socketio
sio = socketio.Client(ssl_verify=False)
@sio.on('connect', namespace='/user')
def connect():
print(f"Connected to user namespace {sio.eio.sid}")
@sio.on('message', namespace='/user')
def message(data):
print('New message from user:', data)
@sio.event
def connect_error(error):
print('Connection to user failed:', error)
@sio.event
def reconnect(attempt_number):
print(f"Reconnected to the server after {attempt_number} attempts")
@sio.event
def disconnect(reason):
print(f"Disconnected from the server due to {reason}")
sio.connect('wss://spot-stream.goonus.io', namespaces=['/user'], transports=['websocket'], auth={"token": "xxx" # or "api_key": "xxx"})
sio.wait()
package main
import (
"fmt"
socketio "github.com/googollee/go-socket.io-client"
)
func main() {
opts := &socketio.Options{
Auth: map[string]string{
"token": "xxx", // or "api_key": "xxx"
},
}
client, err := socketio.NewClient("wss://spot-stream.goonus.io/user", opts)
if err != nil {
panic(err)
}
client.OnConnect("/", func() {
fmt.Println("Connected to user namespace")
})
client.On("message", func(data string) {
fmt.Println("New message:", data)
})
client.Run()
}