如何集成nodeJS + Socket.IO和PHP?

如何集成nodeJS + Socket.IO和PHP?,第1张

如何集成nodeJS + Socket.IO和PHP?
因此,首先,如果您想访问完整的代码,则将我的项目放在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模块时,脚本可用

/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 );});

我将尝试尽快更新和改进我的代码,但我认为它已经对所有有趣的事物开放!我真的很乐意为您提供建议和评论,这是个好方法吗..?

希望这可以帮助一些人!



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4976539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存