Establish Connections
Establish Market Data Connections
The following example demonstrates how to establish five WebSocket connections for market data simultaneously.
info
Typically, multiple simultaneous connections are only needed when using WebSocket. For Web API, it is recommended to use a single connection for easier management.
Web API rate limits are shared across all connections; each WebSocket connection can subscribe to up to 200 targets.
- Python
- Node.js
- C#
from fubon_neo.sdk import FubonSDK
sdk = FubonSDK()
accounts = sdk.login("Your ID", "Your password" ,"Your cert path" ,"Your cert password") # Login is required to obtain market data permissions
websockets = [] # List of WebSocket interfaces for different connections
for _ in range(5): # Create 5 connections
sdk.init_realtime() # Start a market data connection
ws = sdk.marketdata.websocket_client.stock # WebSocket interface (Stocks)
#ws = sdk.marketdata.websocket_client.futopt # WebSocket interface (Futures/Options)
# Add the interface to the available list
websockets.append(ws)
# Set WebSocket callbacks and open connections
for ws in websockets:
## Callback functions need to be defined separately ##
ws.on('message', handle_message) # Register market data callback
ws.on("connect", handle_connect) # Register connection event callback
ws.on("disconnect", handle_disconnect) # Register disconnection event callback
ws.on("error", handle_error) # Register error event callback
ws.connect() # Activate the connection
# Disconnect connections
# for ws in websockets:
# we.disconnect()
const { FubonSDK } = require('fubon-neo');
// Login is required to obtain market data permissions
const sdk = new FubonSDK();
const accounts = sdk.login("Your ID", "Your Password", "Your Cert Path", "Your Cert Password");
const websockets = []; // List of WebSocket interfaces for different connections
// Create 5 market data connections
for (let i = 0; i < 5; i++) {
// Start a market data connection
sdk.initRealtime();
// Get WebSocket interface
const ws = sdk.marketdata.webSocketClient.stock; // (Stocks)
//const ws = sdk.marketdata.webSocketClient.futopt; // (Futures/Options)
// Add the interface to the available list
websockets.push(ws);
}
// Set WebSocket callbacks and open connections
for (const ws of websockets) {
/* -- Callback functions need to be defined separately -- */
ws.on('message', handle_message); // Register market data callback
ws.on('connect', handle_connect); // Register connection event callback
ws.on('disconnect', handle_disconnect); // Register disconnection event callback
ws.on('error', handle_error); // Register error event callback
// Activate the connection
(async () => {
await ws.connect();
})()
}
// Disconnect connections
//for (const ws of websockets) {
// (async () => {
// await ws.disconnect();
// })()
//}
using FubonNeo.Sdk;
// Login is required to obtain market data permissions
var sdk = new FubonSDK();
var result = sdk.Login("Your ID", "Your Password", "Your Cert Path", "Your Cert Password");
// List of WebSocket interfaces for different connections
var websockets = new List<FugleMarketData.WebsocketClient.FugleWebsocketStockClient>(); // (Stocks)
//var websockets = new List<FugleMarketData.WebsocketClient.FugleWebsocketFutOptClient>(); // (Futures/Options)
// Create 5 market data connections
for (int i = 0; i < 5; i++)
{
sdk.InitRealtime(); // Start a market data connection
// Get WebSocket interface
var ws = sdk.MarketData.WebSocketClient.Stock; // (Stocks)
//var ws = sdk.MarketData.WebSocketClient.FutureOption; // (Futures/Options)
// Add the interface to the available list
websockets.Add(ws);
}
// Set WebSocket callbacks and open connections
foreach (var ws in websockets)
{
ws.OnMessage = (msg) => Console.WriteLine($"OnMessage receive: {msg}"); // Register market data callback
ws.OnError = (msg) => Console.WriteLine($"OnError receive: {msg}"); // Register error event callback
ws.OnConnected = (msg) => Console.WriteLine($"OnConnected receive: {msg}"); // Register connection event callback
ws.OnDisconnected = (msg) => Console.WriteLine($"OnDisconnected receive: {msg}"); // Register disconnection event callback
// Activate the connection
await ws.Connect();
}
// Disconnect connections
// foreach (var ws in websockets)
// {
// await ws.Disconnect();
// }