我最近一直在四处寻找,以找到一种在nodeJS和PHP之间进行通信的好方法。这里是一个想法:nodeJS还是一个很新的东西,仅使用它开发一个完整的应用程序可能有点棘手。而且,您可能只需要项目的一个模块(例如实时通知,聊天等),就可以使用PHP来管理所有其他内容,因为它可能对您来说更容易(而且您可以利用现有框架,例如CodeIgniter或Symfony)。
我想有一个简单的解决方案;
我不想使用cURL或第三台服务器在Apache和Node服务器之间进行通信。我想要的是能够从简单Javascript客户端的节点中捕获事件。
我没有找到完整的答案,大多数情况下客户端都是由节点服务器运行的,因此不适用于我的情况。因此,我检索了所有可能的主题,最后找到了答案;我将尽力分享这一点,并提出一个明确的观点。
希望这可以帮助一些人!;)
这是一个非常简单的示例项目:网络聊天。您只有一个作者和一条消息,然后按发送将其保存在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页面中包含的脚本:
<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 );
});
我将尝试尽快更新和改进我的代码,但我认为它已经对所有有趣的事物开放!我真的很乐意为您提供建议和评论,这是个好方法吗..?
希望这可以帮助一些人!
我最近一直在寻找一种在nodeJS和PHP之间进行通信的好方法。这里有一个想法:nodeJS仍然是相当新的,仅仅用它开发一个完整的应用程序可能有点棘手。此外,您可能只需要用于项目的一个模块,如实时通知、聊天等,而您希望用PHP管理所有其他内容,因为它对您来说可能更容易(而且您可以利用现有的框架,如CodeIgniter或Symfony)。
我试图用和构建一个简单的应用程序。 Ive用express Generator生成我的应用程序的skel: 然后我编辑了package.json文件以包含socket.io: 在运行时,so socket.io正在初始化,但似乎没有io.sockets模块。 我运行查看该对象,我得到: 那么sockets方法在哪里呢?无处可去。但是你看,有一个套接字功能: 以防万一,我将发布我的,但我的代码似乎没
我将express与socket.io一起使用,将express-session与Express-socket.io-session一起使用,这有助于将会话连接到我的套接字实例。 Deploy函数运行诸如会话、路由等内容。 POST http://localhost:8080/socket.io/?eio=3&transport=polling&t=lz9ey8p 404(未找到)
然后,可以通过domain.com/socket/访问socket.io(获得消息Welcome to socket.io)。另外,静态内容也被交付,但是我无法找到通过端口80加载“socket.io/socket.io.js”文件的任何方法。 在干净的方式上这可能吗?
问题内容: 使用Nginx时,我的套接字无法连接。我的配置文件是: 我的NodeJS是: 我的客户是 不用说,两者都不显示任何东西。我担心Nginx阻止了该请求,而节点却实际上从未收到它? 问题答案: 好像缺少了
问题内容: 我尝试使用nginx设置nodejs。但是当客户端尝试连接时,它将失败并显示… 那么如何启用websocket通信呢? 我目前的Nginx配置 问题答案: 首先,将您的nginx服务器升级到1.3或更高版本。 其次,我的nginx conf有效。您可以关注我的conf。