ऐसे डेटा हैं जो सर्वर पर लगातार अपडेट होते हैं और फ़ाइल (प्रत्येक 100 एमएस) में लिखे जाते हैं, मुझे इसे क्लाइंट साइड में स्थानांतरित करने की आवश्यकता होती है, कुछ समय के लिए मैंने इसे सेट इंटरवल फ़ंक्शन के माध्यम से किया था (जो उन्हें उसी पर जांचना चाहिए) अंतराल), इस JSON फ़ाइल की जाँच कर रहा है, और मुझे यकीन नहीं है कि यह समस्या का सही समाधान है।

सर्वर साइड कोड:

function SerialPortStart(COM, Input){
console.log( COM, Input);
var serialPort = new SerialPort(COM, {
    parser: SerialPort.parsers.readline('\n'),
    baudrate: +Input || 9600
});
serialPort.on('data', function (data) { 
     thermodata = data.toString();
    console.log(data);
    fs.writeFileSync(__dirname +'/views/cockpit.json',JSON.stringify(thermodata));
});

};

क्लाइंट साइड कोड:

function SerialPortStart(){
var xhr = new XMLHttpRequest();
setInterval(function() {
    xhr.open('GET', 'cockpit.json', true);
    xhr.send();
            xhr.onreadystatechange = function() {
                if(this.status == 200) {
                    var data = JSON.parse(xhr.responseText);
                    console.log(data);
                    obj = data.split(';');
                    if(cockpitNum[3] != null){
                        $('header .mainBlock1 .cockpit .elements .blockHaw .cirle').css({
                            transform: 'rotate('+(obj[cockpitNum[3]]) +'deg)'
                        }); }
                    }, 50);
1
Ilya Pribil 3 अक्टूबर 2017, 15:21

2 जवाब

अब आप AJAX के दायरे में नहीं हैं। एक सामान्य अनुरोध को पूरा होने में लगभग 500ms लग सकते हैं, जो धीमा है और इसके अलावा, यह बहुत अधिक संसाधन की खपत करता है।

वेबसोकेट सीखने का समय। एक websocket (सॉर्टोफ़) एक छोटा कनेक्शन है (ठीक http की तरह), लेकिन यह बंद नहीं होता है (http के विपरीत जो कॉल के अंत में बंद हो जाता है)। इस तरह आप वेबसोकेट से जुड़े सभी लोगों को डेटा प्रसारित कर सकते हैं और यह बहुत तेज़ है।

Node.js एक उदाहरण है जो आपको Socket.io। आप अपनी स्थिति को एक तरह की वन-डायरेक्शन-चैट के रूप में सोच सकते हैं :)

2
Martijn 3 अक्टूबर 2017, 15:54
जवाब के लिए धन्यवाद। मुझे प्रोटोकॉल WebSocket और इसके अलावा socket.io मिला, तो आप इस मामले में क्या सलाह देंगे?
 – 
Ilya Pribil
3 अक्टूबर 2017, 15:38
मैंने इसके बारे में सुना है, AFAIK यह ठीक है। आपको मजाकिया सामान की आवश्यकता नहीं है, किसी भी सॉकेट के बारे में :)
 – 
Martijn
3 अक्टूबर 2017, 15:44
- ओपी क्लाइंट के रूप में ब्राउज़र का उपयोग कर रहा है। आप ब्राउज़र से किसी भी सॉकेट का उपयोग नहीं कर सकते हैं। ब्राउज़र में आपकी पसंद अजाक्स (http) कनेक्शन या वेबसॉकेट कनेक्शन है।
 – 
jfriend00
3 अक्टूबर 2017, 15:51

मेरा सुझाव है कि आप socket.io लाइब्रेरी का उपयोग करें और अपने वेब पेज से अपने सर्वर पर एक socket.io कनेक्शन खोलें। यह क्लाइंट और सर्वर के बीच एक सतत कनेक्शन है और डेटा को क्लाइंट से सर्वर या सर्वर से क्लाइंट को बहुत कम ओवरहेड के साथ किसी भी दिशा में भेजने की अनुमति देता है। यह क्लाइंट और सर्वर के बीच बहुत सारे लेन-देन के लिए आदर्श है और आदर्श है जब सर्वर क्लाइंट को नियमित रूप से डेटा भेजना चाहता है। यह क्लाइंट से अजाक्स मतदान से कहीं अधिक कुशल है।

आप एक नोड.जेएस सर्वर लागू करेंगे जो आने वाले सॉकेट.आईओ कनेक्शन के लिए सुनता है, दूसरे छोर पर कौन सुन रहा है यह स्थापित करने के लिए प्रमाणीकरण की आवश्यकता होती है और फिर आपका सर्वर नियमित रूप से उस क्लाइंट डेटा को भेज सकता है जब भी इसे भेजने के लिए नया डेटा होता है।

आप socket.io के बारे में यहां पढ़ सकते हैं। क्लाइंट और सर्वर दोनों के लिए वहां पुस्तकालय हैं। क्लाइंट-साइड लाइब्रेरी वेबसॉकेट ट्रांसपोर्ट (जो सभी आधुनिक ब्राउज़रों का समर्थन करती है) का उपयोग करती है, लेकिन socket.io सॉकेट के शीर्ष पर कई उपयोगी सुविधाएं जोड़ता है। आदि...)।

सुविधाओं की सूची के लिए इस पोस्ट को देखें socket.io webSockets के शीर्ष पर जोड़ता है:

Socket.io सादे वेबसॉकेट से परे सुविधाएँ

0
jfriend00 3 अक्टूबर 2017, 15:52