तो, के साथ शुरू करने के लिए, मैंने अपना प्रोजेक्ट जीथब पर रखा, यदि आप पूर्ण कोड तक पहुंच चाहते हैं: https://github.com/jdutheil/nodePHP
यह एक बहुत ही सरल उदाहरण परियोजना है: एक वेब चैट। आपके पास बस एक लेखक और संदेश है, और जब आप इसे भेजते हैं तो इसे mysql डेटाबेस में सहेजा जाता है। विचार वास्तविक समय अद्यतन भेजने के लिए है, और एक वास्तविक वार्तालाप है। ;) हम उसके लिए नोडजेएस का उपयोग करेंगे।
मैं PHP कोड के बारे में बात नहीं करूंगा, यह वास्तव में सरल है और यहां दिलचस्प नहीं है; मैं आपको दिखाना चाहता हूं कि अपने नोडज कोड को कैसे एकीकृत किया जाए।
मैं एक्सप्रेस और सॉकेट.आईओ का उपयोग करता हूं, इसलिए उन मॉड्यूल को एनपीएम के साथ स्थापित करना सुनिश्चित करें। फिर, हम एक सरल नोडजेज सर्वर बनाते हैं:
var socket = require( 'socket.io' );
var express = require( 'express' );
var http = require( 'http' );
var app = express();
var server = http.createServer( app );
var io = socket.listen( server );
io.sockets.on( 'connection', function( client ) {
console.log( "New client !" );
client.on( 'message', function( data ) {
console.log( 'Message received ' + data.name + ":" + data.message );
io.sockets.emit( 'message', { name: data.name, message: data.message } );
});
});
server.listen( 8080 );
जब कोई नया उपयोगकर्ता जुड़ा होता है तो हमने अपने ईवेंट कॉलबैक को पंजीकृत किया; जब भी हमें कोई संदेश प्राप्त होता है (चैट संदेश का प्रतिनिधित्व करता है), हम इसे जुड़े हुए प्रत्येक उपयोगकर्ताओं के लिए प्रसारित करते हैं। अब, मुश्किल हिस्सा: ग्राहक-पक्ष! वह हिस्सा जो मुझे सबसे अधिक समय लगा, क्योंकि मुझे नहीं पता था कि किस स्क्रिप्ट में नोडसर्वर के बिना सॉकेट को चलाने में सक्षम होना शामिल है (क्योंकि क्लाइंट पेज एपाचे द्वारा परोसा जाएगा)।
लेकिन सब कुछ पहले से ही किया जाता है; जब आप Npm के साथ सॉकेट.आईओ मॉड्यूल स्थापित करते हैं, तो एक स्क्रिप्ट उपलब्ध होती है /node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js
; वह स्क्रिप्ट जो हम अपने मामले में अपने PHP पेज में शामिल करेंगे:
<script src="js/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script>
<script src="js/nodeClient.js"></script>
और समाप्त करने के लिए, मेरे नोडक्लाइंट.जेएस, जहां हम केवल नोड सर्वर से कनेक्ट करते हैं और हमारे पेज को अपडेट करने के लिए घटना की प्रतीक्षा करते हैं। ;)
var socket = io.connect( 'http://localhost:8080' );
$( "#messageForm" ).submit( function() {
var nameVal = $( "#nameInput" ).val();
var msg = $( "#messageInput" ).val();
socket.emit( 'message', { name: nameVal, message: msg } );
// Ajax call for saving datas
$.ajax({
url: "./ajax/insertNewMessage.php",
type: "POST",
data: { name: nameVal, message: msg },
success: function(data) {
}
});
return false;
});
socket.on( 'message', function( data ) {
var actualContent = $( "#messages" ).html();
var newMsgContent = '<li> <strong>' + data.name + '</strong> : ' + data.message + '</li>';
var content = newMsgContent + actualContent;
$( "#messages" ).html( content );
});
मैं जितनी जल्दी हो सके अपने कोड को अपडेट और सुधारने की कोशिश करूंगा, लेकिन मुझे लगता है कि यह पहले से ही सभी शांत चीजों के लिए खुला है! मैं इस सामान पर सलाह और समीक्षा के लिए वास्तव में खुला हूं, क्या यह इसे करने का अच्छा तरीका है, ..?
आशा है कि यह कुछ लोगों की मदद कर सकता है!