所以,首先,我把我的项目放在github上,如果你想访问完整的代码:https://github.com/jdutheil/nodePHP
这是一个非常简单的示例项目:网络聊天。您只有一个作者和消息,当您按“发送”时,它会保存在mysql数据库中。这个想法是发送实时更新,并进行真正的对话。;)我们将使用nodeJS来实现这一点。
我不会谈论PHP代码,它真的很简单,在这里并不有趣;我想向您展示的是如何集成您的nodeJS代码。
我使用express和 Socket.IO,所以一定要用npm安装这些模块。然后,我们创建一个简单的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 );
我们在新用户连接时注册了事件回调;每次我们收到一条消息(代表聊天消息)时,我们都会将其广播给每个连接的用户。现在,棘手的部分:客户端!这部分花了我大部分时间,因为我不知道哪个脚本包括哪个脚本能够在没有nodeServer的情况下运行 Socket.IO 代码(因为客户端页面将由Apache提供)。
但一切都已经完成。使用 npm 安装 Socket.IO 模块时,脚本在 ;在我的情况下,我们将包含在PHP页面中的脚本:/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js
<script src="js/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script>
<script src="js/nodeClient.js"></script>
最后,我的nodeClient.js,我们只需连接到节点服务器并等待事件更新我们的页面。;)
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 );
});
我会尽快更新和改进我的代码,但我认为它已经对所有很酷的东西开放了!我真的愿意接受有关此内容的建议和评论,这是这样做的好方法吗??
希望这可以帮助一些人!