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!
Mam inne rozwiązanie, które działa całkiem nieźle, ale chciałbym, aby ktoś skomentował jego skuteczność, ponieważ nie miałem (jeszcze) okazji / czasu przetestować go na prawdziwym serwerze.
Oto kod node-js. Umieściłem ten kod w pliku o nazwie nodeserver.js:
A oto prosty fragment kodu w php, wywołujący serwer node-js za pomocą file_get_contents ():
Działa świetnie, kiedy ładuję stronę php, to z kolei wywołuje stronę nodeserver.js, która jsonifikuje obiekt knall.
Mam dwie instalacje hosta lokalnego działające na iis w systemie Windows 10, jeden standardowy serwer php, a serwer nodejs działa z zgrabnym iisnode pakietem .
„Prawdziwy” serwer działa na systemie Ubuntu.
Myślę, że to zgrabne i łatwe rozwiązanie do komunikacji między dwoma serwerami, ale może ktoś ma na ten temat jakieś uwagi?
źródło
nodejs.js
rzeczywistości nie jest to plik źródłowy, ale jest to adres URL, który tak nazwałeś, ponieważ zawiera json? Pierwsza nie miałaby sensu, ale ta druga wydaje mi się bardzo zagmatwana.Spróbuj podobnego lub możesz sprawdzić mój blog, aby uzyskać pełny przykładowy kod na nodejs
Po Twojej stronie:
emit
funkcji, aby wysłać dane do serwera nodeser.Więc teraz twój kod będzie wyglądał
Teraz po stronie serwera Node utwórz moduł obsługi dla żądania, aby odebrać żądanie i wysłać wiadomość do wszystkich podłączonych urządzeń / przeglądarek (server.js)
Teraz strona klient / przeglądarka / klient tworzy odbiornik do odbierania wiadomości gniazda z serwera węzła
źródło