node.js - 如何将 Django 服务器与 Nodejs SocketIO 服务器集成

标签 node.js django socket.io

我正在寻找集成 Client、Django 和 NodeJS 的解决方案。我的任务是构建一个用户可以相互消息的服务器。我有两个解决方案:

  1. 从客户端向 Django 服务器发送请求。 Django 服务器将在数据库中创建消息并将通知推送到 NodeJS 服务器(SocketIO),然后客户端将从 NodeJs 服务器获取更改。通过这个解决方案,我想问如何将请求套接字从Django推送到Node?

enter image description here

  • 从客户端向 Socket 服务器发送请求。 Socket服务器会在数据库中创建消息,然后将其发送给客户端。这个解决方案是好是坏?是否需要改进?
  • enter image description here

    最佳答案

    由于您使用两台服务器,因此您必须在数据库 Redis key value 中针对您的 user_id 存储 socket_id .

    您将需要:

    • Django API 服务器
    • Redis 或任何其他数据库
    • Node 套接字服务器

    第二种解决方案 :

    用于发送消息的 Django API 逻辑必须在 Node Socket 服务器上实现。

    例如。用户认证、检查目标用户、存储消息、从数据库查找用户socket_id等。

    第一个解决方案 :

    1. Use Redis Pub-Sub : 从 Django 服务器,您可以在事件上发布消息,例如“send_message”

    { event_name: "send_message", target_user_id:"t_id", send_user_id:"u_id", target_socket_id:"t_sid", message:"Hello target" }

    在 Node 套接字服务器上,您可以订阅该事件并发送到特定的 socket_id

    io.to(data.target_socket_id).emit("event", data);

  • 您可以在 Node 服务器上创建一个端点来接收来自django服务器的数据并传递 车身参数
  • { event_name: "send_message", target_user_id:"t_id", send_user_id:"u_id", target_socket_id:"t_sid", message:"Hello target" }

    当 Node 服务器收到API请求时,您可以使用事件发射器来发出事件

    process.emit(data.event_name,data)
    

    在套接字连接文件中您可以配置事件监听器

    process.on("send_message",(data)=>{
        io.to(data.target_socket_id).emit("event", data); 
    });
    

    关于node.js - 如何将 Django 服务器与 Nodejs SocketIO 服务器集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53440785/

    相关文章:

    python - 在 Django 中使用 Google App Engine 队列服务

    python - 将 url 正则表达式转换为 django 2.1 中的路径

    Node.js + AngularJS + socket.io : connect state and manually disconnect

    javascript - 从 Django 服务器连接到远程 socket.io 服务器

    node.js - 如何使用 next.js 应用程序运行 Node 服务器?

    node.js - 使用 Node 12 时强制使用 TLS1.2

    javascript - 在multer上传文件之前如何获取正文?

    Django 对象创建一个或多个项目(动态)

    node.js - 如何监控/计算 NodeJS 服务器的带宽使用情况?

    javascript - 如何使用 sequelize model.findAll() 获取表的最大值