【问题标题】:nodeJS script instance for every user每个用户的nodeJS脚本实例
【发布时间】:2015-12-28 09:09:13
【问题描述】:

可能我根本不了解nodeJS,但我构建了一个正在运行的客户端和服务器应用程序,它通过socket.io发送数据。

它工作得很好,但是当我在另一台机器上打开网站时,内容是一样的。

使用 PHP 时,每台运行脚本的机器都有一个唯一的实例,因此我可以进行仅对特定用户可见的数据库调用。

希望这是可以理解的。

编辑:

假设我有一个正常的 socket.io 设置。 单击按钮时,会触发以下内容。

socket.emit('getImages', 'someData');

这将使服务器发回 2 张图片,然后我将在网站上显示。

这适用于一位用户。但如果同时有多个用户,图像将在每个用户的站点上发生变化,而不仅仅是在触发该功能的那个站点上。

【问题讨论】:

  • 你在说什么?您在寻找会话状态吗?
  • Node 的工作方式与 PHP 类似,您可以在路由等回调中为当前用户进行数据库调用。
  • 看看这个nodejs上的简单框架,它提供了一个简单的web服务器,expressjs.com
  • 编辑了问题,现在应该更清楚了。
  • @ArEsiiX 我怀疑在您的服务器上,您只需向所有连接的客户端发送。显然不是你想要的。所以你需要确保你只向发送 socket.emit('getImages'... 的客户端发出信号。这很容易做到。

标签: javascript php jquery ajax node.js


【解决方案1】:

在您的服务器上:

socketServer.on('connection', function(socket){
    console.log("A Client has connected.");
    socket.on('disconnect', function(){
        console.log("A Client has disconnected.");
    });
    socket.on('getImages', function(data){
        //Do something with the image/data here
        //send something to the socket that emitted getimages command
        this.emit.('commandhere', datahere);
        /* you can also do this.broadcast.emit('commandhere', datahere) to broadcast
        all connected sockets except the one who emitted the command
        or socketServer.emit('commandhere', datahere) to broadcast all connected
        sockets. */
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2022-01-15
    • 2015-02-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多