基于PHP的Node JS在实时场景中的使用

基本上我是一个PHP程序员。 我想将PHP与Node js集成。 我在谷歌冲浪,并获得了一个使用PHP和节点js聊天应用程序的示例项目。 我安装到我的本地系统,它工作正常。 但是,我无法理解工作stream程,即Node j如何帮助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 = '<li> <strong>' + data.name + '</strong> : ' + data.message + '</li>'; var content = newMsgContent + actualContent; $( "#messages" ).html( content ); }); 

和nodeserver.js中

 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 ); //client.broadcast.emit( 'message', { name: data.name, message: data.message } ); io.sockets.emit( 'message', { name: data.name, message: data.message } ); }); }); server.listen( 8080 ); 

我有这个…

但我不明白的socket.emit()函数和socket.on() 。 在socket.on()函数,我明白,他们把结果放在一个div。

但是,在index.php文件中,他们使用php,mysql查询获取结果并像这样显示

 <ul id="messages"> <?php $query = $pdo->prepare( 'SELECT * FROM message ORDER BY msgid DESC' ); $query->execute(); $messages = $query->fetchAll( PDO::FETCH_OBJ ); foreach( $messages as $message ): ?> <li> <strong><?php echo $message->name; ?></strong> : <?php echo $message->message; ?> </li> <?php endforeach; ?> </ul> 

没有这个PHP查询输出不会来。 我不明白在哪里节点js帮助成功地运行此应用程序。

请帮助我,我希望这将解决许多关于节点js的混乱

提前致谢!

从你提供的内容来看很难说。

Node.js似乎只用于实时传输。

当你第一次加载页面时,php从表格中输出旧的(已发布的)消息。 后来,当一个新的消息发送,PHP存储到表(以供以后访问),然后将其发送到node.js,然后将其广播给其他客户端。

Node.js在这里似乎不被用于消息持久化。

node.js的确切行为在这里很难解释。 在聊天应用程序中,它可以用作推送服务器(以条目forms发送消息,然后将其推送给其他客户端),但是它也可以用作完整的networking服务器。