populous / streamer
populous中的php-wss websocket服务器包
Requires
- php: >=7.1
- ext-pcntl: *
- arthurkushman/php-wss: ^1.6
Requires (Dev)
- monolog/monolog: ^1.24
- phpunit/phpunit: ^7
- dev-master
- v1.5.0.0
- v1.4.9.9
- v1.4.9.8
- v1.4.9.7
- v1.4.9.6
- v1.4.9.5
- v1.4.9.4
- v1.4.9.3
- v1.4.9.2
- v1.4.9.1
- v1.4.9.0
- v1.4.8.9
- v1.4.8.8
- v1.4.8.7
- v1.4.8.6
- v1.4.8.5
- v1.4.8.4
- v1.4.8.3
- v1.4.8.2
- v1.4.8.1
- v1.4.8.0
- v1.4.7.9
- v1.4.7.8
- v1.4.7.7
- v1.4.7.6
- v1.4.7.5
- v1.4.7.4
- v1.4.7.3
- v1.4.7.2
- v1.4.7.1
- v1.4.7.0
- v1.4.6.9
- v1.4.6.8
- v1.4.6.7
- v1.4.6.6
- v1.4.6.5
- v1.4.6.4
- v1.4.6.3
- v1.4.6.2
- 1.4.6.1
- v1.4.6
- v1.4.5
- v1.4.4
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4
- v1.3
- v1.1
- v1.0
- dev-mak_dev
- dev-vadash_dev
- dev-exchange-page-bug
- dev-exchange-sell
- dev-exchange-buy
- dev-ip-prevention-time-limit
- dev-ip-prevention
- dev-variable-change
- dev-socket-timeout
- dev-clear-connection
This package is not auto-updated.
Last update: 2024-10-01 07:16:59 UTC
README
这是一个基于CodeIgniter 3.1.4的streamer包,用于populous世界。
安装
cd 项目根目录
composer require populous/streamer
将.env文件放入应用程序目录
DB_HOST=YOUR_DB_HOST DB_USERNAME=YOUR_DB_USERNAME DB_PASSWORD=YOUR_DB_PASSWORD DB_NAME=YOUR_DB_NAME WEBSOCKET_IP=127.0.0.1 WEBSOCKET_URL='ws://127.0.0.1' WEBSOCKET_PORT=8443 WEBSOCKET_ENDPOINT='ws://127.0.0.1:8443' WEBSOCKET_ENDPOINT_SERVER_USE='ws://127.0.0.1:8443' ADMIN_USER_ID=YOUR_ADMIN_USER_ID FEES_BALANCE_OF=YOUR_SYMBOL FEES_BALANCE_ABOVE=LIMIT_AMOUNT FEES_BALANCE_DISCOUNT=DISCOUNT_PERCENT
将WsServer_model.php文件放入/application/models目录
此streamer包使用WsServer_model.php文件,如果没有WsServer_model.php文件,将会显示错误。
将shell_scripts目录放入项目根目录
mkdir shell_scripts
touch shell_scripts/run_public_socket_server.sh
#!/bin/bash sudo pkill -f php-wss php /var/www/Altyex/index.php websocket runServer
运行WsServer
nohup sh shell_scripts/run_public_socket_server.sh > shell_scripts/logs/run_public_socket_server.log & disown
官方文档
- 基本端点是:wss//streamer.populous.world/wss
目录
事件
订阅频道
订阅全球市场
请求负载
{
"event": "populous:subscribe",
"channel": "market-<MARKET_NAME>-global",
"data": []
}
响应负载
{
"event": "populous:subscribe_succeeded",
"channel": "market-<MARKET_NAME>-global",
"data": []
}
订阅加密货币汇率频道
请求负载
{
"event": "populous:subscribe",
"channel": "crypto-rates",
"data": []
}
响应负载
{
"event": "populous:subscribe_succeeded",
"channel": "crypto-rates",
"data": []
}
订阅私有用户频道
请求负载
{
"event": "populous:subscribe",
"channel": "private-<PRIVATE_ID>",
"data": {
"auth": "USER_AUTH_DATA"
}
}
响应负载
{
"event": "populous:subscribe_succeeded",
"channel": "private-<PRIVATE_ID>",
"data": []
}
交易所事件
初始化交易所嘉宾
请求负载
{
"event": "exchange-init-guest",
"channel": "private-<PRIVATE_ID>",
"data": {
"market": "PPT_USDC",
}
}
响应负载
{
"event": "exchange-init-guest",
"channel": "private-<PRIVATE_ID>",
"data": {
"buy_orders": "ARRAY_OF_BUY_ORDERS",
"sell_orders": "ARRAY_OF_SELL_ORDERS",
"coin_history": "ARRAY_OF_COIN_HISTORY",
"coinpairs_24h_summary": "OBJECT_OF_COINPAIR_SUMMARY",
"market_pairs": "ARRAY_OF_MARKET_PAIRS",
"trade_history": "ARRAY_OF_TRADE_HISTORY",
}
}
初始化交易所
请求负载
{
"event": "exchange-init",
"channel": "private-<PRIVATE_ID>",
"data": {
"market": "PPT_USDC",
"ua": "USER_AUTH_DATA",
}
}
响应负载
{
"event": "exchange-init",
"channel": "private-<PRIVATE_ID>",
"data": {
"buy_orders": "ARRAY_OF_BUY_ORDERS",
"sell_orders": "ARRAY_OF_SELL_ORDERS",
"coin_history": "ARRAY_OF_COIN_HISTORY",
"coinpairs_24h_summary": "OBJECT_OF_COINPAIR_SUMMARY",
"market_pairs": "ARRAY_OF_MARKET_PAIRS",
"trade_history": "ARRAY_OF_TRADE_HISTORY",
"completed_orders": "ARRAY_OF_COMPLETED_ORDERS",
"pending_orders": "ARRAY_OF_PENDING_ORDERS",
"user_balance": "ARRAY_OF_USER_BALANCE",
}
}
限价买入
请求负载
{
"event": "exchange-buy",
"channel": "private-<PRIVATE_ID>",
"data": {
"amount": "AMOUNT_OF_BUYING",
"pair_id": "COINPAIR_ID",
"price": "PRICE_OF_BUYING",
"trade_type": "limit",
"ua": "USER_AUTH_DATA",
}
}
响应负载
{
"event": "order-update",
"channel": "private-<PRIVATE_ID>",
"data": {
"amount_available": "AMOUNT_AVAILABLE_NUMBER",
"bid_price": "PRICE_OF_BUYING",
"bid_qty": "AMOUNT_OF_BUYING",
}
}
{
"event": "balance-update",
"channel": "private-<PRIVATE_ID>",
"data": [
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "PRIMARY_CURRENCY_ID",
"user_id": "USER_ID",
},
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "SECONDARY_CURRENCY_ID",
"user_id": "USER_ID",
}
]
}
{
"event": "orderbook",
"channel": "market-<MARKET_NAME>-global",
"data": {
"buy_orders": "<BUY_ORDER_DATA_ARRAY>",
"sell_orders": "<SELL_ORDER_DATA_ARRAY>",
}
}
{
"event": "trade-history",
"channel": "market-<MARKET_NAME>-global",
"data": [
{
"bid_price": "1.53",
"bid_type": "SELL",
"complete_qty": "30",
"success_time: `2020-05-13 17:04:31`
},
]
}
{
"event": "price-change",
"channel": "crypto-rates",
"data": {
"current_price": "1.530000",
"previous_price": "1.530000",
}
}
{
"event": "exchange-buy",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": true,
"message": "Buy order successfully placed.",
"trade_type": "limit"
}
}
错误响应负载
消息将有以下之一 [ "用户未找到.", "无效的配对", "买入价格无效.", "买入数量无效.", "交易无法提交.", "余额不足." ]
{
"event": "exchange-buy",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": false,
"message": "User could not found." ,
"trade_type": "limit"
}
}
市价买入
请求负载
{
"event": "exchange-buy",
"channel": "private-<PRIVATE_ID>",
"data": {
"amount": "AMOUNT_OF_BUYING",
"pair_id": "COINPAIR_ID",
"trade_type": "market",
"ua": "USER_AUTH_DATA",
}
}
响应负载
{
"event": "order-update",
"channel": "private-<PRIVATE_ID>",
"data": {
"amount_available": "AMOUNT_AVAILABLE_NUMBER",
"bid_price": "PRICE_OF_BUYING",
"bid_qty": "AMOUNT_OF_BUYING",
}
}
{
"event": "balance-update",
"channel": "private-<PRIVATE_ID>",
"data": [
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "PRIMARY_CURRENCY_ID",
"user_id": "USER_ID",
},
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "SECONDARY_CURRENCY_ID",
"user_id": "USER_ID",
}
]
}
{
"event": "orderbook",
"channel": "market-<MARKET_NAME>-global",
"data": {
"buy_orders": "<BUY_ORDER_DATA_ARRAY>",
"sell_orders": "<SELL_ORDER_DATA_ARRAY>",
}
}
{
"event": "trade-history",
"channel": "market-<MARKET_NAME>-global",
"data": [
{
"bid_price": "1.53",
"bid_type": "SELL",
"complete_qty": "30",
"success_time: `2020-05-13 17:04:31`
},
]
}
{
"event": "price-change",
"channel": "crypto-rates",
"data": {
"current_price": "1.530000",
"previous_price": "1.530000",
}
}
{
"event": "exchange-buy",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": true,
"message": "<AMOUNT> bought. <QTY> created open order at price <PRICE>.",
"trade_type": "market"
}
}
错误响应负载
消息将有以下之一 [ "用户未找到.", "无效的配对", "买入价格无效.", "交易无法提交.", "余额不足." ]
{
"event": "exchange-buy",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": false,
"message": "User could not found." ,
"trade_type": "market"
}
}
限价止损买入
请求负载
{
"event": "exchange-buy",
"channel": "private-<PRIVATE_ID>",
"data": {
"stop": "STOP_PRICE_OF_BUYING",
"limit": "LIMIT_PRICE_OF_BUYING",
"amount": "AMOUNT_OF_BUYING",
"pair_id": "COINPAIR_ID",
"trade_type": "stop_limit",
"ua": "USER_AUTH_DATA",
}
}
响应负载
{
"event": "order-update",
"channel": "private-<PRIVATE_ID>",
"data": {
"amount_available": "AMOUNT_AVAILABLE_NUMBER",
"bid_price": "PRICE_OF_BUYING",
"bid_qty": "AMOUNT_OF_BUYING",
}
}
{
"event": "balance-update",
"channel": "private-<PRIVATE_ID>",
"data": [
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "PRIMARY_CURRENCY_ID",
"user_id": "USER_ID",
},
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "SECONDARY_CURRENCY_ID",
"user_id": "USER_ID",
}
]
}
{
"event": "orderbook",
"channel": "market-<MARKET_NAME>-global",
"data": {
"buy_orders": "<BUY_ORDER_DATA_ARRAY>",
"sell_orders": "<SELL_ORDER_DATA_ARRAY>",
}
}
{
"event": "trade-history",
"channel": "market-<MARKET_NAME>-global",
"data": [
{
"bid_price": "1.53",
"bid_type": "SELL",
"complete_qty": "30",
"success_time: `2020-05-13 17:04:31`
},
]
}
{
"event": "price-change",
"channel": "crypto-rates",
"data": {
"current_price": "1.530000",
"previous_price": "1.530000",
}
}
{
"event": "exchange-buy",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": true,
"message": "Stop limit order has been placed",
"trade_type": "stop_limit"
}
}
错误响应负载
消息将有以下之一 [ "用户未找到.", "无效的配对", "买入止损价格无效.", "买入限价价格无效.", "买入数量无效.", "无法创建订单", "您的余额不足,需要更多 <AMOUNT_NEEDED> 来创建订单." ]
{
"event": "exchange-buy",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": false,
"message": "User could not found." ,
"trade_type": "limit"
}
}
限价卖出
请求负载
{
"event": "exchange-sell",
"channel": "private-<PRIVATE_ID>",
"data": {
"amount": "AMOUNT_OF_BUYING",
"pair_id": "COINPAIR_ID",
"price": "PRICE_OF_BUYING",
"trade_type": "limit",
"ua": "USER_AUTH_DATA",
}
}
响应负载
{
"event": "order-update",
"channel": "private-<PRIVATE_ID>",
"data": {
"amount_available": "AMOUNT_AVAILABLE_NUMBER",
"bid_price": "PRICE_OF_BUYING",
"bid_qty": "AMOUNT_OF_BUYING",
}
}
{
"event": "balance-update",
"channel": "private-<PRIVATE_ID>",
"data": [
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "PRIMARY_CURRENCY_ID",
"user_id": "USER_ID",
},
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "SECONDARY_CURRENCY_ID",
"user_id": "USER_ID",
}
]
}
{
"event": "orderbook",
"channel": "market-<MARKET_NAME>-global",
"data": {
"buy_orders": "<BUY_ORDER_DATA_ARRAY>",
"sell_orders": "<SELL_ORDER_DATA_ARRAY>",
}
}
{
"event": "trade-history",
"channel": "market-<MARKET_NAME>-global",
"data": [
{
"bid_price": "1.53",
"bid_type": "SELL",
"complete_qty": "30",
"success_time: `2020-05-13 17:04:31`
},
]
}
{
"event": "price-change",
"channel": "crypto-rates",
"data": {
"current_price": "1.530000",
"previous_price": "1.530000",
}
}
{
"event": "exchange-sell",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": true,
"message": "Sell order successfully placed.",
"trade_type": "limit"
}
}
错误响应负载
消息将有以下之一 [ "用户未找到.", "无效的配对", "买入价格无效.", "买入数量无效.", "交易无法提交.", "余额不足." ]
{
"event": "exchange-sell",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": false,
"message": "User could not found." ,
"trade_type": "limit"
}
}
市价卖出
请求负载
{
"event": "exchange-sell",
"channel": "private-<PRIVATE_ID>",
"data": {
"amount": "AMOUNT_OF_BUYING",
"pair_id": "COINPAIR_ID",
"trade_type": "market",
"ua": "USER_AUTH_DATA",
}
}
响应负载
{
"event": "order-update",
"channel": "private-<PRIVATE_ID>",
"data": {
"amount_available": "AMOUNT_AVAILABLE_NUMBER",
"bid_price": "PRICE_OF_BUYING",
"bid_qty": "AMOUNT_OF_BUYING",
}
}
{
"event": "balance-update",
"channel": "private-<PRIVATE_ID>",
"data": [
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "PRIMARY_CURRENCY_ID",
"user_id": "USER_ID",
},
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "SECONDARY_CURRENCY_ID",
"user_id": "USER_ID",
}
]
}
{
"event": "orderbook",
"channel": "market-<MARKET_NAME>-global",
"data": {
"buy_orders": "<BUY_ORDER_DATA_ARRAY>",
"sell_orders": "<SELL_ORDER_DATA_ARRAY>",
}
}
{
"event": "trade-history",
"channel": "market-<MARKET_NAME>-global",
"data": [
{
"bid_price": "1.53",
"bid_type": "SELL",
"complete_qty": "30",
"success_time: `2020-05-13 17:04:31`
},
]
}
{
"event": "price-change",
"channel": "crypto-rates",
"data": {
"current_price": "1.530000",
"previous_price": "1.530000",
}
}
{
"event": "exchange-sell",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": true,
"message": "<AMOUNT> bought. <QTY> created open order at price <PRICE>.",
"trade_type": "market"
}
}
错误响应负载
消息将有以下之一 [ "用户未找到.", "无效的配对", "买入价格无效.", "交易无法提交.", "余额不足." ]
{
"event": "exchange-sell",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": false,
"message": "User could not found." ,
"trade_type": "market"
}
}
限价止损卖出
请求负载
{
"event": "exchange-sell",
"channel": "private-<PRIVATE_ID>",
"data": {
"stop": "STOP_PRICE_OF_BUYING",
"limit": "LIMIT_PRICE_OF_BUYING",
"amount": "AMOUNT_OF_BUYING",
"pair_id": "COINPAIR_ID",
"trade_type": "stop_limit",
"ua": "USER_AUTH_DATA",
}
}
响应负载
{
"event": "order-update",
"channel": "private-<PRIVATE_ID>",
"data": {
"amount_available": "AMOUNT_AVAILABLE_NUMBER",
"bid_price": "PRICE_OF_BUYING",
"bid_qty": "AMOUNT_OF_BUYING",
}
}
{
"event": "balance-update",
"channel": "private-<PRIVATE_ID>",
"data": [
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "PRIMARY_CURRENCY_ID",
"user_id": "USER_ID",
},
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "SECONDARY_CURRENCY_ID",
"user_id": "USER_ID",
}
]
}
{
"event": "orderbook",
"channel": "market-<MARKET_NAME>-global",
"data": {
"buy_orders": "<BUY_ORDER_DATA_ARRAY>",
"sell_orders": "<SELL_ORDER_DATA_ARRAY>",
}
}
{
"event": "trade-history",
"channel": "market-<MARKET_NAME>-global",
"data": [
{
"bid_price": "1.53",
"bid_type": "SELL",
"complete_qty": "30",
"success_time: `2020-05-13 17:04:31`
},
]
}
{
"event": "price-change",
"channel": "crypto-rates",
"data": {
"current_price": "1.530000",
"previous_price": "1.530000",
}
}
{
"event": "exchange-sell",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": true,
"message": "Stop limit order has been placed",
"trade_type": "stop_limit"
}
}
错误响应负载
消息将有以下之一 [ "用户未找到.", "无效的配对", "买入止损价格无效.", "买入限价价格无效.", "买入数量无效.", "无法创建订单", "您的余额不足,需要更多 <AMOUNT_NEEDED> 来创建订单." ]
{
"event": "exchange-sell",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": false,
"message": "User could not found." ,
"trade_type": "stop_limit"
}
}
取消订单事件
请求负载
{
"event": "exchange-cancel-order",
"channel": "private-<PRIVATE_ID>",
"data": {
"order_id": "ORDER_ID",
"ua": "USER_AUTH_DATA",
}
}
响应负载
{
"event": "order-update",
"channel": "private-<PRIVATE_ID>",
"data": {
"amount_available": "AMOUNT_AVAILABLE_NUMBER",
"bid_price": "PRICE_OF_BUYING",
"bid_qty": "AMOUNT_OF_BUYING",
}
}
{
"event": "balance-update",
"channel": "private-<PRIVATE_ID>",
"data": [
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "PRIMARY_CURRENCY_ID",
"user_id": "USER_ID",
},
{
"balance": "BALANCE",
"balance_on_hold": "BALANCE_ON_HOLD",
"currency_id": "SECONDARY_CURRENCY_ID",
"user_id": "USER_ID",
}
]
}
{
"event": "orderbook",
"channel": "market-<MARKET_NAME>-global",
"data": {
"buy_orders": "<BUY_ORDER_DATA_ARRAY>",
"sell_orders": "<SELL_ORDER_DATA_ARRAY>",
}
}
{
"event": "trade-history",
"channel": "market-<MARKET_NAME>-global",
"data": [
{
"bid_price": "1.53",
"bid_type": "SELL",
"complete_qty": "30",
"success_time: `2020-05-13 17:04:31`
},
]
}
{
"event": "price-change",
"channel": "crypto-rates",
"data": {
"current_price": "1.530000",
"previous_price": "1.530000",
}
}
{
"event": "exchange-cancel-order",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": true,
"message": "Request cancelled successfully."
}
}
错误响应负载
消息将有以下之一 [ "不允许取消此订单.", "无法取消订单" ]
{
"event": "exchange-cancel-order",
"channel": "private-<PRIVATE_ID>",
"data": {
"isSuccess": false,
"message": "You are not allow to cancel this order."
}
}
订单簿事件
初始化订单簿
请求负载
{
"event": "orderbook-init",
"channel": "market-<MARKET_NAME>-global",
"data": {
"market": "PPT_USDC",
}
}
响应负载
{
"event": "orderbook-init",
"channel": "market-<MARKET_NAME>-global",
"data": {
"buy_orders": "ARRAY_OF_BUY_ORDERS",
"sell_orders": "ARRAY_OF_SELL_ORDERS",
}
}
API设置事件
初始化API设置
请求负载
{
"event": "api-setting-init",
"channel": "private-<PRIVATE_ID>",
"data": {
"ua": "USER_AUTH",
}
}
响应负载
{
"event": "api-setting-init",
"channel": "private-<PRIVATE_ID>",
"data": {
"status": true,
"all_keys": [],
}
}
创建API
请求负载
{
"event": "api-setting-create",
"channel": "private-<PRIVATE_ID>",
"data": {
"ua": "USER_AUTH",
"api_name": "API_NAME",
"ga_token": "GA_TOKEN (if set)",
"is_ga_required": false,
}
}
响应负载
{
"event": "api-setting-create",
"channel": "private-<PRIVATE_ID>",
"data": {
"status": true,
"message": "API successfully created.",
"new_key": {},
}
}
更新API
请求负载
{
"event": "api-setting-update",
"channel": "private-<PRIVATE_ID>",
"data": {
"ua": "USER_AUTH",
"api_name": "API_NAME",
"ga_token": "GA_TOKEN (if set)",
"is_ga_required": false,
"id": "API_ID",
"can_trade": 0,
"can_withdraw": 1,
"ip_addresses_text": "",
"ip_restricted": 0,
"read_info": 1,
"status": 0
}
}
响应负载
{
"event": "api-setting-update",
"channel": "private-<PRIVATE_ID>",
"data": {
"status": true,
"message": "API successfully updated.",
}
}
删除API
请求负载
{
"event": "api-setting-delete",
"channel": "private-<PRIVATE_ID>",
"data": {
"ua": "USER_AUTH",
"api_id": "API_ID",
"ga_token": "GA_TOKEN (if set)",
"is_ga_required": false,
}
}
响应负载
{
"event": "api-setting-delete",
"channel": "private-<PRIVATE_ID>",
"data": {
"status": true,
"message": "API <api_name> successfully deleted.",
"deleted_id": "DELETED_API_ID",
}
}
