获取印度股票市场API
一、WebSocket服务端示例(Golang实现)
package mainimport ("encoding/json""fmt""log""net/http""github.com/gorilla/websocket"
)var upgrader = websocket.Upgrader{ReadBufferSize: 1024,WriteBufferSize: 1024,CheckOrigin: func(r *http.Request) bool {return true // 生产环境需配置域名白名单},
}type StockRequest struct {CountryID int `json:"countryId"`PageSize int `json:"pageSize"`Page int `json:"page"`Key string `json:"key"` // 建议通过环境变量注入正式KEY
}func wsHandler(w http.ResponseWriter, r *http.Request) {conn, err := upgrader.Upgrade(w, r, nil)if err != nil {log.Println("WebSocket升级失败:", err)return}defer conn.Close()for {_, message, err := conn.ReadMessage()if err != nil {break}var req StockRequestif err := json.Unmarshal(message, &req); err != nil {conn.WriteJSON(map[string]string{"error": "无效的JSON格式"})continue}// 密钥验证(演示用临时KEY)if req.Key == "" || req.Key == "临时KEY" {conn.WriteJSON(map[string]string{"warning": "请通过官方渠道申请免费API KEY","contact": "support@stocktv.top",})continue}// 模拟返回股票数据(实际应调用原API)response := map[string]interface{}{"code": 200,"data": []map[string]interface{}{{"id": 41602,"chg": 0.12,"symbol": "MDCH","volume": 1241700,},},}if err := conn.WriteJSON(response); err != nil {log.Println("数据发送失败:", err)break}}
}func main() {http.HandleFunc("/ws/stocks", wsHandler)log.Fatal(http.ListenAndServe(":8080", nil))
}
二、WebSocket客户端示例(JavaScript)
const socket = new WebSocket('ws://localhost:8080/ws/stocks');// 连接建立时发送请求参数
socket.onopen = function() {const request = {countryId: 42, // 东南亚国家代码pageSize: 10,page: 1,key: 'MY4b781f618e3f43c4b055f25fa61941ad' // 此处使用临时KEY};socket.send(JSON.stringify(request));
};// 接收实时数据
socket.onmessage = function(event) {const response = JSON.parse(event.data);if(response.warning) {console.warn('⚠️ ' + response.warning);console.log('联系方式:', response.contact);return;}if(response.code === 200) {response.data.forEach(stock => {console.log(`股票 ${stock.symbol} 最新价: ${stock.last}`);// 更新前端图表逻辑...});}
};// 错误处理
socket.onerror = function(error) {console.error('连接异常:', error);
};
三、关键功能说明
-
密钥管理机制
- 服务端会验证
key
参数有效性,无效KEY返回官方申请提示 - 建议通过环境变量注入正式KEY(生产环境需删除临时KEY逻辑)
- 服务端会验证
-
数据推送模式
- 支持双向通信,服务端可主动推送市场异动数据
- 客户端可发送新的
countryId
参数切换国家数据源
-
性能优化建议
// 服务端可添加速率限制(示例为无限制) conn.SetReadLimit(512) // 限制单次消息大小 conn.SetReadDeadline(time.Now().Add(60 * time.Second))
四、获取正式API KEY
- 访问股票数据平台官网
- 点击"开发者中心"注册账号
- 在控制台创建新应用获取唯一API KEY
- 免费版支持特性:
- 东南亚5国+日本市场数据
- 每秒10次请求限制
- 基础技术指标数据
注意:本示例中的
MY4b781f618e3f43c4b055f25fa61941ad
为临时测试KEY,正式环境请通过官方渠道申请,避免出现401 Unauthorized
错误。