Documentation Index Fetch the complete documentation index at: https://benzinga-2-locadex-parallel-main.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
مستودع GitHub اطّلع على الشيفرة المصدرية وساهم في تطويرها
تم اختباره مع Go 1.13+
تنفيذ عالي الأداء
دون تبعيات خارجية
يستخدم مكتبة context الخاصة بـ Go لإلغاء العمليات
ثبّت المكتبة والعميل النموذجي:
go install github.com/Benzinga/go-bztcp/cmd/bztcp@latest
سيتم تثبيت الملف التنفيذي bztcp في $GOPATH/bin.
اختبر العميل البرمجي باستخدام البرنامج التنفيذي المرفق:
bztcp -v -user YOUR_USERNAME -key YOUR_API_KEY
Option الوصف -userاسم مستخدم Benzinga TCP الخاص بك -keyمفتاح وصول واجهة برمجة التطبيقات API الخاص بك -vتفعيل الإخراج التفصيلي
إذا تم التنفيذ بنجاح، سترى رسائل مشابهة لما يلي:
Benzinga TCP Client initializing.
Connecting to 'tcp-v1.benzinga.io:11337' as user 'YOUR_USERNAME' (w/TLS: false)
Connected. Waiting for events.
{"id":49917328,"title":"Alphabet Option Alert..."}
توفر المكتبة دالتين رئيسيتين:
الدالة الوصف bztcp.Dial(addr, user, key)إنشاء اتصال بخادم TCP Conn.Stream(ctx, callback)بدء تدفق الرسائل باستخدام استدعاء راجع (callback)
package main
import (
" context "
" fmt "
" github.com/Benzinga/go-bztcp/bztcp "
)
func main () {
// الاتصال بالخادم
conn , err := bztcp . Dial ( "tcp-v1.benzinga.io:11337" , "USER" , "KEY" )
if err != nil {
panic ( err )
}
// بث الرسائل
err = conn . Stream ( context . Background (), func ( stream bztcp . StreamData ) {
fmt . Printf ( " %#v \n " , stream )
})
if err != nil {
panic ( err )
}
}
الإلغاء المستند إلى السياق
استخدم حزمة context في Go لتنفيذ إيقاف تشغيل سلس:
package main
import (
" context "
" fmt "
" os "
" os/signal "
" syscall "
" github.com/Benzinga/go-bztcp/bztcp "
)
func main () {
conn , err := bztcp . Dial ( "tcp-v1.benzinga.io:11337" , "USER" , "KEY" )
if err != nil {
panic ( err )
}
// إنشاء سياق قابل للإلغاء
ctx , cancel := context . WithCancel ( context . Background ())
defer cancel ()
// معالجة إشارات الإغلاق
sigChan := make ( chan os . Signal , 1 )
signal . Notify ( sigChan , syscall . SIGINT , syscall . SIGTERM )
go func () {
<- sigChan
fmt . Println ( "جارٍ الإغلاق..." )
cancel ()
}()
// البث باستخدام السياق
err = conn . Stream ( ctx , func ( stream bztcp . StreamData ) {
fmt . Printf ( "تم الاستلام: %s \n " , stream . Title )
})
if err != nil && err != context . Canceled {
fmt . Printf ( "خطأ: %v \n " , err )
}
}
تحتوي البنية StreamData على الرسالة المُحلَّلة:
conn . Stream ( ctx , func ( stream bztcp . StreamData ) {
// الوصول إلى حقول الرسالة
fmt . Printf ( "ID: %d \n " , stream . ID )
fmt . Printf ( "Title: %s \n " , stream . Title )
fmt . Printf ( "Published: %s \n " , stream . Published )
// معالجة رموز التداول
for _ , ticker := range stream . Tickers {
fmt . Printf ( "Ticker: %s \n " , ticker . Name )
}
// معالجة القنوات
for _ , channel := range stream . Channels {
fmt . Printf ( "Channel: %s \n " , channel )
}
})
conn , err := bztcp . Dial ( "tcp-v1.benzinga.io:11337" , "USER" , "KEY" )
if err != nil {
log . Fatalf ( "فشل الاتصال: %v " , err )
}
err = conn . Stream ( ctx , handler )
if err != nil {
switch {
case err == context . Canceled :
log . Println ( "تم إلغاء البث من قبل المستخدم" )
case err == context . DeadlineExceeded :
log . Println ( "انتهت مهلة البث" )
default :
log . Printf ( "خطأ في البث: %v " , err )
}
}
package main
import (
" context "
" encoding/json "
" fmt "
" log "
" os "
" os/signal "
" syscall "
" github.com/Benzinga/go-bztcp/bztcp "
)
func main () {
user := os . Getenv ( "BZTCP_USER" )
key := os . Getenv ( "BZTCP_KEY" )
if user == "" || key == "" {
log . Fatal ( "Set BZTCP_USER and BZTCP_KEY environment variables" )
}
conn , err := bztcp . Dial ( "tcp-v1.benzinga.io:11337" , user , key )
if err != nil {
log . Fatalf ( "Connection failed: %v " , err )
}
ctx , cancel := context . WithCancel ( context . Background ())
defer cancel ()
// إيقاف سلس
sigChan := make ( chan os . Signal , 1 )
signal . Notify ( sigChan , syscall . SIGINT , syscall . SIGTERM )
go func () {
<- sigChan
fmt . Println ( " \n Shutting down gracefully..." )
cancel ()
}()
fmt . Println ( "Starting Benzinga TCP stream..." )
err = conn . Stream ( ctx , func ( stream bztcp . StreamData ) {
// طباعة الرسالة بتنسيق واضح
data , _ := json . MarshalIndent ( stream , "" , " " )
fmt . Println ( string ( data ))
})
if err != nil && err != context . Canceled {
log . Printf ( "Stream ended with error: %v " , err )
}
}
Go 1.13 أو أحدث (يستخدم مكتبة context، ويتطلب Go 1.8+)
اتصال شبكي إلى tcp-v1.benzinga.io:11337