Jadi, sebagai permulaan, saya meletakkan proyek saya di github, jika Anda ingin mengakses kode lengkap: https://github.com/jdutheil/nodePHP
Ini adalah proyek contoh yang sangat sederhana: obrolan web. Anda hanya memiliki seorang penulis dan pesan, dan ketika Anda menekan kirim itu disimpan dalam database mysql. Idenya adalah mengirim pembaruan waktu nyata, dan melakukan percakapan nyata. ;) Kami akan menggunakan nodeJS untuk itu.
Saya tidak akan berbicara tentang kode PHP, ini sangat sederhana dan tidak menarik di sini; apa yang ingin saya tunjukkan adalah bagaimana mengintegrasikan kode nodeJS Anda.
Saya menggunakan express dan Socket.IO, jadi pastikan untuk menginstal modul tersebut dengan npm. Kemudian, kami membuat server nodeJS sederhana:
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 );
Kami mendaftarkan acara callback kami ketika pengguna baru terhubung; setiap kali kami menerima pesan (mewakili pesan obrolan), kami menyiarkannya ke setiap pengguna yang terhubung. Sekarang, bagian yang sulit: sisi klien! Itu bagian yang menyita sebagian besar waktu saya, karena saya tidak tahu skrip mana yang termasuk untuk dapat menjalankan kode Socket.IO tanpa nodeServer (karena halaman klien akan dilayani oleh Apache).
Tapi semuanya sudah selesai; ketika Anda menginstal modul Socket.IO dengan npm, skrip tersedia di /node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js
; bahwa skrip yang akan kami sertakan di halaman PHP kami, dalam kasus saya:
<script src="js/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script>
<script src="js/nodeClient.js"></script>
Dan untuk menyelesaikan, nodeClient.js saya, di mana kita cukup terhubung ke server node dan menunggu acara untuk memperbarui halaman kita. ;)
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 );
});
Saya akan mencoba memperbarui dan meningkatkan kode saya secepat mungkin, tetapi saya pikir itu sudah terbuka untuk semua hal keren! Saya sangat terbuka untuk saran dan ulasan tentang hal ini, apakah ini cara yang baik untuk melakukannya, ..?
Semoga ini bisa membantu beberapa orang!