2011-12-16 13 views
71

जहां तक ​​मैंने देखा है, socket.io के लिए क्लाइंट साइड स्क्रिप्ट का पता लगाने के लिए हमें कोई स्पष्टीकरण नहीं है कि node.js वेब सर्वर के रूप में उपयोग नहीं किया जाता है। मुझे क्लाइंट साइड फाइलों की पूरी निर्देशिका मिली है, लेकिन मुझे उन्हें एक संयुक्त संस्करण में चाहिए (जैसे यह node.js webs सर्वर का उपयोग करते समय परोसा जाता है)। कोई विचार?socket.io क्लाइंट लाइब्रेरी कहां है?

उत्तर

65

socket.io.js वह है जो आप अपने क्लाइंट-साइड एचटीएमएल में डाल रहे हैं। की तरह कुछ:

<script type="text/javascript" src="socket.io.js"></script> 

मेरी स्क्रिप्ट स्थित है:

/usr/local/lib/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js 

जहां आप अपने सर्वर यह सेवा करना चाहते करने के लिए नकल है कि फाइल।

+3

बहुत बढ़िया, धन्यवाद। यह पता नहीं लगा सका कि उस निर्देशिका में निर्देशिका की उस गड़बड़ी में फ़ाइल कहां थी :) –

+4

हाँ, यह तार्किक नहीं है। Socket.io का उपयोग कर बहुत से लोग उससे पूछते हैं। सबसे अच्छा :-) – EhevuTov

+4

धन्यवाद आदमी! यह अजीब बात है कि दस्तावेज़ों या नमूने में इसके बारे में कोई जानकारी नहीं है। – Peter

25

मुझे लगता है कि बेहतर और उचित तरीके से डोमेन जहां रन socket.io पर इस यूआरएल

src="/socket.io/socket.io.js" 

से लोड करने के लिए है। इस समाधान पर सकारात्मक क्या है कि यदि आप अपना सॉकेट.io एनपीएम मॉड्यूल अपडेट करते हैं, तो आपकी क्लाइंट फ़ाइल भी अपडेट हो जाती है और आपको हर बार इसे मैन्युअल रूप से कॉपी करने की आवश्यकता नहीं होती है।

+1

यह सबसे अच्छा जवाब आईएमओ है। यह क्लाइंट-साइड का अनुशंसित उपयोग सॉकेट.आईओ दस्तावेज से शामिल है। यह बताता है कि @ कैपाज के फायदे के साथ-साथ यह कहां से आता है। –

+15

यह केवल सबसे अच्छा समाधान है IF Node.js उस वेबसाइट परोसता है जहां आप कनेक्शन होना चाहते हैं। यह वास्तव में बड़ा 'आईएफ' है। –

169

मुझे ऐसा करने का सबसे अच्छा तरीका bower का उपयोग करना है।

<script src="/bower_components/socket.io-client/socket.io.js"></script> 

इस तरह आप अपने ग्राहक के socket.io हिस्सा उसी तरह आप किसी भी अन्य कामयाब पैकेज इलाज का इलाज कर सकते हैं:

bower install socket.io-client --save 

और अपने अनुप्रयोग के HTML में निम्न शामिल हैं।

+5

यह सबसे अच्छा समाधान है, धन्यवाद! यदि यह किसी और की सहायता करता है, तो minified socket.io क्लाइंट 'bower_components/socket.io-client/dist/socket.io.min.js' – mikermcneil

+5

bower ftw में स्थित है।

+0

"bowerInstall: target" (bowerInstall) कार्य चलाना सॉकेट.ओ-क्लाइंट को आपकी फ़ाइल में इंजेक्शन नहीं दिया गया था। कृपया अपनी इच्छित फ़ाइल के लिए "ग्राहक/bower_components/socket.io-client" में एक नज़र डालें, फिर मैन्युअल रूप से इसे अपनी फ़ाइल में शामिल करें। – smk

2

यदि आप bower.json का उपयोग कर रहे हैं, तो socket.io-client निर्भरता जोड़ें।

"socket.io-client": "0.9.x" 

फिर बोवर स्थापित socket.io-ग्राहक डाउनलोड करने के लिए चलाते हैं।

फिर अपने HTML में स्क्रिप्ट टैग जोड़ें।

<script src="bower_components/socket.io-client/dist/socket.io.min.js"></script> 
6

जो कोई wiredep चलाता है और हो जाता है के लिए "socket.io-ग्राहक आपकी फ़ाइल में इंजेक्शन नहीं था।" त्रुटि:

इस तरह से अपनी wiredep कार्य संशोधित करें:

wiredep: { 
    .. 
    main: { 
    .. 
    overrides: { 
     'socket.io-client': { 
     main: 'socket.io.js' 
     } 
    } 
    } 
+0

@ के-डी ने इसे हल किया, लेकिन वह क्यों है? डिफ़ॉल्ट रूप से 'socket.io-client' के साथ क्या नहीं होता है? – Nitzankin

+0

क्योंकि वे बोवर का समर्थन नहीं करना चाहते हैं। –

2

मैं एक बोवर संगत सॉकेट बनाया है।कब-ग्राहक है कि इस तरह स्थापित किया जा सकता है:

bower install sio-client --save 

या विकास के उपयोग के लिए:

bower install sio-client --save-dev 

लिंक repo

+0

क्या आप कोई अपडेट जारी करेंगे? सॉकेटियो अब 1.3.5 पर है। कुछ कारणों से आपका बहुत धीमा और घबराहट है। –

+0

को अपडेट किया गया 1.3.5 –

+0

शायद बॉवर क्लाइंट संस्करण के अपडेट को स्वचालित करने का कोई तरीका है? – Diogyn

8

मैं बोवर इस्तेमाल किया करने के लिए सुझाव दिया के रूप में मैट वे का जवाब, और यह बहुत अच्छा काम किया, लेकिन फिर लाइब्रेरी इज़ेल एफ की अपनी bower.json फ़ाइल नहीं थी।

इसका मतलब यह था कि bower-main-files गुलप प्लगइन जो मैं अपनी निर्भरताओं की जेएस फाइलों को ढूंढने के लिए उपयोग कर रहा हूं, socket.io में नहीं खींच पाया, और मुझे पेज लोड पर एक त्रुटि मिल रही थी। मेरे प्रोजेक्ट के bower.json पर ओवरराइड जोड़ने से इस मुद्दे पर काम किया गया।

पहले बोवर साथ पुस्तकालय स्थापित:

bower install socket.io-client --save 

फिर अपने प्रोजेक्ट की bower.json को ओवरराइड जोड़ें:

"overrides": { 
    "socket.io-client": { 
    "main": ["socket.io.js"] 
    } 
} 
0

अगर आप https://github.com/btford/angular-socket-io का उपयोग की तरह आपका index.html है सुनिश्चित करें यह:

<!-- https://raw.githubusercontent.com/socketio/socket.io-client/master/socket.io.js --> 
<script src="socket.io.js"></script> 

<!-- build:js({client,node_modules}) app/vendor.js --> 
<!-- bower:js --> 
<script src="bower_components/jquery/dist/jquery.js"></script> 
<script src="bower_components/angular/angular.js"></script> 
<!-- ...... --> 
<script src="bower_components/angular-socket-io/socket.js"></script> 
<!-- endbower --> 
<!-- endbuild --> 



<script type="text/javascript" charset="utf-8"> 
    angular.module('myapp', [ 
// ...  
'btford.socket-io' 
]); 

// do your angular/socket stuff 
</script> 
संबंधित मुद्दे