2015-09-23 10 views
14

जबकि सॉकेट का उपयोग करने के लिए बहुत अच्छा प्रलेखन होता था, Irl Nathon's Sails Cast series के लिए धन्यवाद। v0.11 में, sails टीम wrapping और socket.io routines दफनाने के साथ चीजें बदल गई हैं।sails.io के साथ socket.io का उपयोग करना

सेल साइट उदा। SailsSocket यह कहकर करना है कि क्या करना है, लेकिन यह नहीं कि कैसे या कहां किया जाए, या यदि मुझे एनपीएम या बोवर कुछ चाहिए। यह sails.config.sockets सैल साइट पर बात करने के लिए विशेष रूप से निराशाजनक रहा है। जो मैं अपने v0.11 निर्देशिकाओं में भी नहीं ढूंढ सकता।

सबसे पहले, मैं जानना चाहता हूं कि io.socket.get या .post या जो भी हो, पर अपनी प्रतिक्रिया कैसे और कहां बनाना है। अभी जब मैं की तरह कुछ के साथ एक मिलता है:

`io.socket.request({ 
    method: 'get', 
    url: '/sites/2', 
    params: {}, 
    headers: {} 
},function serverResponded(body, JWR){console.log("Body: ", JSON.stringify(body,null, 4)); console.log(' JWR: ', JWR.body)});' 

मैं वापस पाने:

undefined 
VM1149:7 "Not implemented in core yet" 
VM1149:7 JWR: Not implemented in core yet 

मैं देख सकता हूँ साइटों पाल कंसोल में बुलाया जा रहा है, लेकिन कुछ भी भर आता है।

मेरा मानना ​​है कि ऐसा इसलिए है क्योंकि मैंने अपने मार्गों को परिभाषित किया है और मेरा स्वयं का पता है: मेरी साइट नियंत्रक में कार्य करें और मुझे मैन्युअल रूप से सर्वर साइड सॉकेट में कुछ धक्का देना होगा। लेकिन मैं उलझन में हूं कि मैं HTTP के साथ एक संपूर्ण पृष्ठ कैसे कॉल कर सकता हूं और उसी नियंत्रक दिनचर्या में सॉकेट.ओ के साथ टेबल।

  • कहाँ मैं अपने खुद के निम्न स्तर socket.io दिनचर्या है कि एक वेब पेज से कहा जा सकता है लिख सकता हूँ?

  • क्या मैं अभी भी app.js फ़ाइल में ऐसा करता हूं?

सेल कास्ट ने यह दिखाया कि यह वहां किया जा रहा है, लेकिन फिर चीजें बदल गई हैं।

+0

[यह] [http://stackoverflow.com/questions/40021125/sails-io-js-io-socket-get-user-not-implemented-in-core-yet/40027253#40027253) थ्रेड सहायता आप? मुझे लगता है कि सवाल काफी समान है ... –

+0

कृपया अधिक जानकारी प्रदान करें कि आप अपने सेल हुक को कैसे कॉन्फ़िगर कर रहे हैं –

उत्तर

0

सेल "आभासी अनुरोध" (वे इन सॉकेट.io-आधारित HTTP-ish अनुरोध को कॉल करते हैं) आमतौर पर सर्वर पर JSON डेटा पुनर्प्राप्त या पोस्ट करने के लिए उपयोग किए जाते हैं। इसके अतिरिक्त, यदि क्लाइंट-साइड स्क्रिप्ट वर्चुअल अनुरोध करता है, तो सर्वर अनुरोध करने वाले सॉकेट को कमरे से/जोड़ सकता है या हटा सकता है।

ध्यान दें कि "आभासी विधि" का उपयोग करके अंततः एक ही नियंत्रक कार्रवाई चलाएगी, लेकिन req.isSocket = true सेट करेगा।

यह उदाहरण के लिए एक दृश्य एचटीएमएल-चाहने अनुरोधों के लिए एक दृश्य प्रस्तुत होती है सॉकेट आधारित अनुरोधों के लिए JSON डेटा देता है जो:

... 
// 'get /sites/:id': 'SomeController.showSite' (should be put in your `routes.js`) 
showSite: function(req, res) { 
    // load something from the database 
    Site.findOne(req.param('id')).exec(function(err, site) { 
    // handler errors (same for HTTP or sockets) 
    if (err) return res.serverError(); 
    if (!site) return res.notFound(); 

    if (req.isSocket) return res.json(site); // render JSON response for our `site` object 
    else return res.view('sites/show', {site: site}); // render an HTML view 
    }); 
} 

निम्न स्तर socket.io का सवाल है, पाल (से वैश्विक चर io प्रदान करता है sails.io.js), जो SailsSocket का उदाहरण है। यह आपको HTTP-ish "वर्चुअल अनुरोध" बनाने की अनुमति देता है। अधिक जानकारी here (हालांकि ऐसा लगता है कि आप पहले ही सब कुछ पढ़ चुके हैं SailsSocket :) के बारे में पढ़ने के लिए। आप अंतर्निहित socket.io क्लाइंट io.socket._raw के साथ एक्सेस कर सकते हैं।

// do this in the browser. 
// sails.io.js should be included in layout.ejs by default. 
io.socket.get('/site/2', console.log); // "virtual request" 
// neat little trick  ^^^^^^^^^^^  for testing :) 
var rawIO = io.socket._raw; 
rawIO.emit('some:event', "using native socket.io"); 

आशा है कि इससे मदद मिलती है!

संबंधित मुद्दे