के साथ सॉकेट्स मैं express.js 4 का उपयोग करके वास्तव में एक साधारण नोड एपीआई बनाने की कोशिश कर रहा हूं लेकिन मुझे कुछ 'रीयलटाइम' ईवेंट की आवश्यकता है जिसके लिए मैंने socket.io जोड़ा है। मैं दोनों के लिए काफी नया हूं इसलिए मुझे कुछ मूलभूत याद आ रही है लेकिन मुझे इस पर अच्छे दस्तावेज़/टट्स नहीं मिल रहे हैं।express.js 4 और एक्सप्रेस राउटर
एक्सप्रेस ऐप (एक्सप्रेस जनरेटर के साथ बनाया गया) में मेरे पास कुछ सरल उदाहरण और प्रोजेक्ट दस्तावेज़ों के आधार पर ऐसा कुछ है जो मैंने पढ़ा है। यह ठीक काम करता है और ग्राहक क्षुधा से, मैं भेज/सॉकेट ईवेंट प्राप्त कर सकते हैं:
var express = require('express');
var path = require('path');
var logger = require('morgan');
var api = require('./routes/api');
var app = express();
var io = require('socket.io').listen(app.listen(3000));
app.use(logger('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/api', api);
io.sockets.on('connection', function (socket) {
console.log('client connect');
socket.on('echo', function (data) {
io.sockets.emit('message', data);
});
});
// error handlers omitted
module.exports = app;
लेकिन मैं अपने एपीआई मार्गों से सॉकेट (./routes/api.js फ़ाइल में है कि मैं की आवश्यकता का उपयोग करना चाहते ' ऊपर)। उदाहरण के लिए, कोई व्यक्ति संसाधन को PUT/POST करने के लिए API का उपयोग कर सकता है और मैं चाहता हूं कि वह socket.io क्लाइंट से कनेक्ट हो।
मैं नहीं देख सकता कि 'io' चर का उपयोग कैसे करें या वर्तमान में io.sockets.on('connection' ...
एक्सप्रेस मार्गों के भीतर कोड को व्यवस्थित करें। आप जाँच कर सकते हैं अगर यह काम करता है
var express = require('express');
var router = express.Router();
var io = ???;
router.put('/foo', function(req, res) {
/*
do stuff to update the foo resource
...
*/
// now broadcast the updated foo..
io.sockets.emit('update', foo); // how?
});
module.exports = router;
धन्यवाद Caner। यह काम करता है और कुछ मामूली बदलावों के साथ मैं इसका उपयोग कर सकता हूं क्योंकि यह विशेष ऐप काफी सरल है। लेकिन जैसा कि मैं कुछ सर्वोत्तम प्रथाओं को सीखने के लिए इसका उपयोग करने की कोशिश कर रहा हूं, क्या एक्सप्रेस राउटर() का उपयोग जारी रखने का कोई तरीका है? यह एक्सप्रेस 4.x के लिए जाने का बेवकूफ तरीका प्रतीत होता है। – darrend
@ डेरेंड, एक्सप्रेस.जेएस दस्तावेजों के मुताबिक ऐसा लगता है कि http://expressjs.com/api.html की तरह उपयोग करना ठीक है, आपको क्या लगता है? – cdagli
यह उचित है - मैं दस्तावेज़ों और कोड में स्वीकार्य और खुदाई के रूप में चिह्नित करूंगा। सहायता के लिए धन्यवाद। – darrend