nodejs php集成,node.js - 如何集成nodeJS + Socket.IO和PHP?

所以,首先,如果你想访问完整的代码,我把我的项目放在github上:[https://github.com/jdutheil/nodePHP]

这是一个非常简单的示例项目:网络聊天。 您只需要一个作者和消息,当您按下send时,它将保存在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模块时,脚本可在/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js中找到; 在我的情况下,我们将在PHP页面中包含的脚本:

并完成我的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 = '

' + data.name + ' : ' + data.message + '';

var content = newMsgContent + actualContent;

$( "#messages" ).html( content );

});

我会尽快更新和改进我的代码,但我认为它已经开放给所有很酷的东西! 我非常乐意接受这方面的建议和评论,是不是这样做的好方法,...?

希望这可以帮助一些人!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值