Vì vậy, để bắt đầu, tôi đặt dự án của mình trên github, nếu bạn muốn truy cập vào mã đầy đủ: https://github.com/jdutheil/nodePHP
Đó là một dự án ví dụ rất đơn giản: một cuộc trò chuyện trên web. Bạn chỉ có một tác giả và tin nhắn, và khi bạn nhấn gửi, nó sẽ được lưu trong cơ sở dữ liệu mysql. Ý tưởng là gửi thông tin cập nhật theo thời gian thực và trò chuyện thực tế. ;) Chúng tôi sẽ sử dụng nodeJS cho điều đó.
Tôi sẽ không nói về mã PHP, nó thực sự đơn giản và không thú vị ở đây; điều tôi muốn chỉ cho bạn là cách tích hợp mã nodeJS của bạn.
Tôi sử dụng express và Socket.IO, vì vậy hãy đảm bảo cài đặt các mô-đun đó với npm. Sau đó, chúng tôi tạo một máy chủ nodeJS đơn giản:
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 );
Chúng tôi đã đăng ký gọi lại sự kiện của mình khi một người dùng mới được kết nối; mỗi khi chúng tôi nhận được một tin nhắn (đại diện cho một tin nhắn trò chuyện), chúng tôi sẽ phát nó cho mọi người dùng được kết nối. Bây giờ, phần khó khăn: phía khách hàng! Đó là phần khiến tôi mất phần lớn thời gian, vì tôi không biết tập lệnh nào bao gồm để có thể chạy mã Socket.IO mà không có nodeServer (vì trang khách sẽ được Apache phục vụ).
Nhưng mọi thứ đã được thực hiện; khi bạn cài đặt mô-đun Socket.IO với npm, một tập lệnh có sẵn trong /node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js
; rằng tập lệnh mà chúng tôi sẽ đưa vào trang PHP của mình, trong trường hợp của tôi:
<script src="js/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script>
<script src="js/nodeClient.js"></script>
Và để kết thúc, nodeClient.js của tôi, nơi chúng tôi chỉ cần kết nối với máy chủ nút và đợi sự kiện cập nhật trang của chúng tôi. ;)
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 );
});
Tôi sẽ cố gắng cập nhật và cải thiện mã của mình càng sớm càng tốt, nhưng tôi nghĩ nó đã mở cho tất cả những điều thú vị! Tôi thực sự cởi mở để được tư vấn và đánh giá về công cụ này, nó có phải là cách tốt để làm điều đó, ..?
Hy vọng điều này có thể giúp một số người!