Zunächst stelle ich mein Projekt auf github, wenn Sie auf den vollständigen Code zugreifen möchten: https://github.com/jdutheil/nodePHP
Es ist ein sehr einfaches Beispielprojekt: ein Web-Chat. Sie haben nur einen Autor und eine Nachricht, und wenn Sie auf Senden klicken, wird diese in einer MySQL-Datenbank gespeichert. Die Idee ist, Aktualisierungen in Echtzeit zu senden und ein echtes Gespräch zu führen. ;) Dafür verwenden wir nodeJS.
Ich werde nicht über PHP-Code sprechen, es ist wirklich einfach und hier nicht interessant; Ich möchte Ihnen zeigen, wie Sie Ihren nodeJS-Code integrieren.
Ich benutze Express und Socket.IO, also installiere diese Module unbedingt mit npm. Dann erstellen wir einen einfachen NodeJS-Server:
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 );
Wir haben unseren Ereignisrückruf registriert, wenn ein neuer Benutzer verbunden ist. Jedes Mal, wenn wir eine Nachricht erhalten (die eine Chat-Nachricht darstellt), senden wir sie an alle verbundenen Benutzer. Nun der knifflige Teil: clientseitig! Das war der Teil, der mich die meiste Zeit gekostet hat, weil ich nicht wusste, welches Skript enthalten ist, um Socket.IO-Code ohne den nodeServer ausführen zu können (da die Client-Seite von Apache bereitgestellt wird).
Aber alles ist schon erledigt; Wenn Sie das Socket.IO-Modul mit npm installieren, ist ein Skript in verfügbar /node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js
. dass das Skript, das wir in unsere PHP-Seite aufnehmen werden, in meinem Fall:
<script src="js/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script>
<script src="js/nodeClient.js"></script>
Und zum Schluss meine nodeClient.js, wo wir einfach eine Verbindung zum Knotenserver herstellen und auf das Ereignis warten, um unsere Seite zu aktualisieren. ;)
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 );
});
Ich werde versuchen, meinen Code so schnell wie möglich zu aktualisieren und zu verbessern, aber ich denke, er ist bereits offen für alle coolen Dinge! Ich bin wirklich offen für Ratschläge und Bewertungen zu diesem Thema. Ist das der gute Weg, dies zu tun?
Hoffe das kann einigen Leuten helfen!