2016-03-03 4 views
7

मैंने कॉटन बनाया है और इसे सफलतापूर्वक चलाया है। आईपी: 192.168.1.111। अब मुझे जिस प्रश्न का सामना करना पड़ा वह आरईएसटी एपीआई के माध्यम से टर्न क्रेडेंशियल प्राप्त करना है। http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00 बीतने के अनुसार अनुरोध प्रारूपसहकारी: टर्न रीस्ट एपीआई का उपयोग कैसे करें?

GET /?service=turn&username=mbzrxpgjys

होना चाहिए और प्रतिक्रिया JSON होना चाहिए। अब मेरा सवाल है:

ए) REST API मोड में इसे चलाने के लिए टर्न सर्वर को कॉन्फ़िगर और कमांड कैसे करें?

बी) सही प्रारूप में http अनुरोध कैसे लिखें ताकि TURN SERVER सही ढंग से उत्तर दे सके? क्या आप मुझे एक उदाहरण दे सकते हैं?

उत्तर

13

कुछ बातें यहाँ स्पष्ट किया जा करने के लिए कर रहे हैं:

  • GET /?service=turn&username=mbzrxpgjys जो एक JSON देता है, सिर्फ एक सर्वर से समय-सीमित मोड़ साख पुन: प्राप्त करने के लिए सुझाव दिया uri, आप की जरूरत नहीं है इसका पालन करें, आपकी यूरी सिर्फ /?giveMeCredentials हो सकती है। असल में, मैं इस डेटा को पुनः प्राप्त करने के लिए अपने सॉकेट कनेक्शन का उपयोग करता हूं, जेसन प्रतिक्रिया के साथ सीधे http कॉल नहीं। दिन का अंत, इससे कोई फ़र्क नहीं पड़ता कि आप (क्लाइंट जो टर्न कहलाता है) को तब तक प्राप्त करें जब तक कि वे मान्य हों।

  • आप सीधे टर्न सर्वर से कोई अनुरोध नहीं करते हैं, कोई अतिरिक्त एपीआई टर्न सर्वर पर कॉल आपके नियंत्रण में है।

  • जब आप टर्न सर्वर शुरू कर रहे हैं तो आप एक गुप्त कुंजी आवंटित करते हैं, इसे एक डीबी (इस प्रकार गतिशील रूप से परिवर्तनीय) से लिया जा सकता है, लेकिन आलसी है कि मैं बस हार्ड कोडित हूं, और इसे बदली कॉन्फ़िगरेशन फ़ाइल में दिया , आरईएसटी एपीआई को सक्षम करना भी याद रखें। बारी आदेश का हिस्सा है, turnserver ... --use-auth-secret --static-auth-secret=MySecretKey

  • अब के रूप में, अपने अनुप्रयोग सर्वर में, आप एक ही गुप्त कुंजी का उपयोग करें, साख उत्पन्न करने के लिए उपयोगकर्ता नाम होगा, यह यूनिक्स टाइमस्टैम्प और कुछ स्ट्रिंग है (यादृच्छिक या उपयोगकर्ता आईडी या कुछ और हो सकता है) : द्वारा पृथक और पासवर्ड आपकी गुप्त कुंजी के साथ उपयोगकर्ता नाम का एचएमएसी होगा।

  • यूनिक्स टाइमस्टैम्प के बारे में, यह समय टर्न सर्वर में है जब तक आपके क्रेडेंशियल्स को वैध नहीं होना चाहिए, जिससे यह गणना हो कि आप अपने एप्लिकेशन सर्वर और अपने टर्न सर्वर के बीच घड़ी के समय के अंतर को ध्यान में रखते हैं ।

कुछ नमूना मोड़ सर्वर बताते हुए के लिए एक और question

आदेश करने के लिए अपने जवाब से लिया कोड:

var crypto = require('crypto'); 

function getTURNCredentials(name, secret){  

    var unixTimeStamp = parseInt(Date.now()/1000) + 24*3600, // this credential would be valid for the next 24 hours 
     username = [unixTimeStamp, name].join(':'), 
     password, 
     hmac = crypto.createHmac('sha1', secret); 
    hmac.setEncoding('base64'); 
    hmac.write(username); 
    hmac.end(); 
    password = hmac.read(); 
    return { 
     username: username, 
     password: password 
    }; 
} 
:

turnserver -v --syslog -a -L xx.xxx.xx.xx -X yy.yyy.yyy.yy -E zz.zzz.zz.zzz --max-bps=3000000 -f -m 3 --min-port=32355 --max-port=65535 --use-auth-secret --static-auth-secret=my_secret --realm=north.gov --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -q 100 -Q 300 --cipher-list=ALL 

node.js अनुप्रयोग सर्वर में बारी साख बनाने के लिए कोड

इसका उपयोग करने के लिए ब्राउज़र कोड:

... 
    iceServers:[ 
    { 
     urls: "turn:turn_server_ip", 
     username: username, 
     credential:password 
    } 
    ... 
संबंधित मुद्दे