在 Symfony2 应用程序中包含 Node.JS + Socket.IO

Include Node.JS + Socket.IO in Symfony2 application

我做了很多研究,但似乎找不到合适的解决方案。我对PHP很有信心。我也完成了一些关于 Node.JSSocket.IO 的教程,我目前正在学习 Symfony2 但我看不出如何将两者合并以实现我的目标。

我的目标是为我的应用程序的后端用户设置实时通知。这个应用程序是一个电子商务网站,我希望在管理面板右上角的视觉通知发出订单后立即警告幕后管理员。我的服务器使用 FreeBSD.

我的计划是使用Node.JSSocket.IO来实现。如果有更好的方案,我愿意听听。否则,我无法找到合适的资源来告诉我如何将 Node.JSSocket.IO 包含到 Symfony2 应用程序中。我使用 composer 来安装包,但我没有将 NPM 与 Symfony2 一起使用。

我发现 this question, this link and this other question 可以帮助我,但其中 none 告诉我如何在 Symfony2 应用程序中安装 Node.JS

如果有人可以帮助我完成让我开始开发此功能的步骤,我会很高兴。

谢谢!

对于那些可能对答案感兴趣的人:

$ su -

安装Node.JS

$ cd /usr/ports/www/node

$ make install clean

安装 NPM

$ cd /usr/ports/www/npm

$ make install clean

安装Socket.IO

$ cd /path/to/your/project/js/public/files

$ npm install socket.io

开发代码

app.js

var http = require('http');
var fs = require('fs');

var server = http.createServer(function(req, res) {
    fs.readFile('./index.html', 'utf-8', function(error, content) {
        res.writeHead(200, {"Content-Type": "text/html"});
        res.end(content);
    });
});

var io = require('socket.io').listen(server);

io.sockets.on('connection', function (socket) {
    socket.on('newOrder', function () {
        socket.broadcast.emit('message', 'Nouvelle commande');
    });
});

server.listen(4321);

前端

<script src="{{ asset('http://localhost:4321/socket.io/socket.io.js') }}"></script>

<script>
    jQuery(function($) {
        var socket = io.connect('http://localhost:4321');

        $('form').on('submit', function() {
            socket.emit('newOrder', '1');
        });

    });
</script>

后端

<script>
    jQuery(function($) {    
        var socket = io.connect('http://localhost:4321');

        socket.on('message', function(message) {
            alert(message);
        });
    });

</script>

启动服务器

$ node app.js

就这些!