Więc na początek umieściłem swój projekt na githubie, jeśli chcesz mieć dostęp do pełnego kodu: https://github.com/jdutheil/nodePHP
To bardzo prosty przykładowy projekt: czat internetowy. Masz tylko autora i wiadomość, a po naciśnięciu wyślij jest ona zapisywana w bazie danych mysql. Chodzi o to, aby wysyłać aktualizacje w czasie rzeczywistym i prowadzić prawdziwą rozmowę. ;) Użyjemy do tego nodeJS.
Nie będę mówić o kodzie PHP, jest tu naprawdę prosty i mało interesujący; chcę wam pokazać, jak zintegrować kod nodeJS.
Używam express i Socket.IO, więc pamiętaj, aby zainstalować te moduły z npm. Następnie tworzymy prosty serwer nodeJS:
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 );
Zarejestrowaliśmy nasze wywołanie zwrotne zdarzeń, gdy nowy użytkownik jest podłączony; za każdym razem, gdy otrzymujemy wiadomość (reprezentuje wiadomość na czacie), wysyłamy ją do wszystkich podłączonych użytkowników. A teraz trudna część: po stronie klienta! Ta część zajmowała mi najwięcej czasu, ponieważ nie wiedziałem, który skrypt zawiera, aby móc uruchomić kod Socket.IO bez nodeServer (ponieważ strona klienta będzie obsługiwana przez Apache).
Ale wszystko już jest zrobione; kiedy instalujesz moduł Socket.IO z npm, skrypt jest dostępny w /node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js
; że skrypt umieścimy na naszej stronie PHP, w moim przypadku:
<script src="js/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script>
<script src="js/nodeClient.js"></script>
I na koniec mój nodeClient.js, gdzie po prostu łączymy się z serwerem węzłów i czekamy, aż zdarzenie zaktualizuje naszą stronę. ;)
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 );
});
Postaram się jak najszybciej zaktualizować i ulepszyć mój kod, ale myślę, że jest już otwarty na wszystkie fajne rzeczy! Jestem naprawdę otwarty na porady i recenzje na ten temat, czy to dobry sposób, aby to zrobić…?
Mam nadzieję, że to może pomóc niektórym ludziom!