How to integrate Django server with Nodejs SocketIO server












0














Im finding a solution in integrate Client, Django and NodeJS. My task is building a server which user can message to each other. I have 2 solutions:




  1. From Client send request to Django server. Django server will create Message in Database and push a notification to NodeJS server(SocketIO), then Client will get change from NodeJs server. With this solution, I want to ask how can I push request socket from Django to Node?


enter image description here




  1. From Client send request to Socket server. Socket server will create Message in Database, then send it to Client. This solution is good or bad? Need improved?


enter image description here



I really need a solution to work. Please help me if your guys have experience! Thanks in advance!










share|improve this question



























    0














    Im finding a solution in integrate Client, Django and NodeJS. My task is building a server which user can message to each other. I have 2 solutions:




    1. From Client send request to Django server. Django server will create Message in Database and push a notification to NodeJS server(SocketIO), then Client will get change from NodeJs server. With this solution, I want to ask how can I push request socket from Django to Node?


    enter image description here




    1. From Client send request to Socket server. Socket server will create Message in Database, then send it to Client. This solution is good or bad? Need improved?


    enter image description here



    I really need a solution to work. Please help me if your guys have experience! Thanks in advance!










    share|improve this question

























      0












      0








      0







      Im finding a solution in integrate Client, Django and NodeJS. My task is building a server which user can message to each other. I have 2 solutions:




      1. From Client send request to Django server. Django server will create Message in Database and push a notification to NodeJS server(SocketIO), then Client will get change from NodeJs server. With this solution, I want to ask how can I push request socket from Django to Node?


      enter image description here




      1. From Client send request to Socket server. Socket server will create Message in Database, then send it to Client. This solution is good or bad? Need improved?


      enter image description here



      I really need a solution to work. Please help me if your guys have experience! Thanks in advance!










      share|improve this question













      Im finding a solution in integrate Client, Django and NodeJS. My task is building a server which user can message to each other. I have 2 solutions:




      1. From Client send request to Django server. Django server will create Message in Database and push a notification to NodeJS server(SocketIO), then Client will get change from NodeJs server. With this solution, I want to ask how can I push request socket from Django to Node?


      enter image description here




      1. From Client send request to Socket server. Socket server will create Message in Database, then send it to Client. This solution is good or bad? Need improved?


      enter image description here



      I really need a solution to work. Please help me if your guys have experience! Thanks in advance!







      node.js django socket.io






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 23 at 4:48









      KitKit

      7671027




      7671027
























          1 Answer
          1






          active

          oldest

          votes


















          2














          As you are using two server you will have to store socket_id against your user_id in the Database Redis key value.



          You will need :




          • Django Api Server

          • Redis or any other database

          • Node Socket Server


          For second solution :



          Django API logic for sending message will have to be implemented on Node Socket server.



          ex. user authentication, Checking target user, storing messages, finding user socket_id from database etc.



          For first solution :





          1. Use Redis Pub-Sub :
            From Django Server you can publish message on an event ex "send_message"



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




          On Node socket server you can Subscribe to that event and emit to specific socket_id




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





          1. You can create an endpoint on node server to receive the data from django server and pass
            Body parameters



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




          When node-server receives the API request you can use event emitter to emit the event



          process.emit(data.event_name,data)


          Inside Socket Connection File you can configure event listener



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





          share|improve this answer





















          • Do you think the first or the second solution is good and easy for management? Or something else? Why, bro?
            – KitKit
            Nov 23 at 7:50






          • 1




            @FeedGit I would prefer second solution for a simple chat application and use socket acknowledgement link and socket middle-ware link for authentication when socket connects.It will keep all the logic at one place.Hence easier to maintain.
            – Mukul Dev
            Nov 23 at 8:34










          • Thank you very much Mukul. I'll try continuing with the Second.
            – KitKit
            Nov 23 at 8:56











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53440785%2fhow-to-integrate-django-server-with-nodejs-socketio-server%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2














          As you are using two server you will have to store socket_id against your user_id in the Database Redis key value.



          You will need :




          • Django Api Server

          • Redis or any other database

          • Node Socket Server


          For second solution :



          Django API logic for sending message will have to be implemented on Node Socket server.



          ex. user authentication, Checking target user, storing messages, finding user socket_id from database etc.



          For first solution :





          1. Use Redis Pub-Sub :
            From Django Server you can publish message on an event ex "send_message"



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




          On Node socket server you can Subscribe to that event and emit to specific socket_id




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





          1. You can create an endpoint on node server to receive the data from django server and pass
            Body parameters



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




          When node-server receives the API request you can use event emitter to emit the event



          process.emit(data.event_name,data)


          Inside Socket Connection File you can configure event listener



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





          share|improve this answer





















          • Do you think the first or the second solution is good and easy for management? Or something else? Why, bro?
            – KitKit
            Nov 23 at 7:50






          • 1




            @FeedGit I would prefer second solution for a simple chat application and use socket acknowledgement link and socket middle-ware link for authentication when socket connects.It will keep all the logic at one place.Hence easier to maintain.
            – Mukul Dev
            Nov 23 at 8:34










          • Thank you very much Mukul. I'll try continuing with the Second.
            – KitKit
            Nov 23 at 8:56
















          2














          As you are using two server you will have to store socket_id against your user_id in the Database Redis key value.



          You will need :




          • Django Api Server

          • Redis or any other database

          • Node Socket Server


          For second solution :



          Django API logic for sending message will have to be implemented on Node Socket server.



          ex. user authentication, Checking target user, storing messages, finding user socket_id from database etc.



          For first solution :





          1. Use Redis Pub-Sub :
            From Django Server you can publish message on an event ex "send_message"



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




          On Node socket server you can Subscribe to that event and emit to specific socket_id




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





          1. You can create an endpoint on node server to receive the data from django server and pass
            Body parameters



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




          When node-server receives the API request you can use event emitter to emit the event



          process.emit(data.event_name,data)


          Inside Socket Connection File you can configure event listener



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





          share|improve this answer





















          • Do you think the first or the second solution is good and easy for management? Or something else? Why, bro?
            – KitKit
            Nov 23 at 7:50






          • 1




            @FeedGit I would prefer second solution for a simple chat application and use socket acknowledgement link and socket middle-ware link for authentication when socket connects.It will keep all the logic at one place.Hence easier to maintain.
            – Mukul Dev
            Nov 23 at 8:34










          • Thank you very much Mukul. I'll try continuing with the Second.
            – KitKit
            Nov 23 at 8:56














          2












          2








          2






          As you are using two server you will have to store socket_id against your user_id in the Database Redis key value.



          You will need :




          • Django Api Server

          • Redis or any other database

          • Node Socket Server


          For second solution :



          Django API logic for sending message will have to be implemented on Node Socket server.



          ex. user authentication, Checking target user, storing messages, finding user socket_id from database etc.



          For first solution :





          1. Use Redis Pub-Sub :
            From Django Server you can publish message on an event ex "send_message"



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




          On Node socket server you can Subscribe to that event and emit to specific socket_id




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





          1. You can create an endpoint on node server to receive the data from django server and pass
            Body parameters



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




          When node-server receives the API request you can use event emitter to emit the event



          process.emit(data.event_name,data)


          Inside Socket Connection File you can configure event listener



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





          share|improve this answer












          As you are using two server you will have to store socket_id against your user_id in the Database Redis key value.



          You will need :




          • Django Api Server

          • Redis or any other database

          • Node Socket Server


          For second solution :



          Django API logic for sending message will have to be implemented on Node Socket server.



          ex. user authentication, Checking target user, storing messages, finding user socket_id from database etc.



          For first solution :





          1. Use Redis Pub-Sub :
            From Django Server you can publish message on an event ex "send_message"



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




          On Node socket server you can Subscribe to that event and emit to specific socket_id




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





          1. You can create an endpoint on node server to receive the data from django server and pass
            Body parameters



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




          When node-server receives the API request you can use event emitter to emit the event



          process.emit(data.event_name,data)


          Inside Socket Connection File you can configure event listener



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






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 23 at 7:32









          Mukul Dev

          664




          664












          • Do you think the first or the second solution is good and easy for management? Or something else? Why, bro?
            – KitKit
            Nov 23 at 7:50






          • 1




            @FeedGit I would prefer second solution for a simple chat application and use socket acknowledgement link and socket middle-ware link for authentication when socket connects.It will keep all the logic at one place.Hence easier to maintain.
            – Mukul Dev
            Nov 23 at 8:34










          • Thank you very much Mukul. I'll try continuing with the Second.
            – KitKit
            Nov 23 at 8:56


















          • Do you think the first or the second solution is good and easy for management? Or something else? Why, bro?
            – KitKit
            Nov 23 at 7:50






          • 1




            @FeedGit I would prefer second solution for a simple chat application and use socket acknowledgement link and socket middle-ware link for authentication when socket connects.It will keep all the logic at one place.Hence easier to maintain.
            – Mukul Dev
            Nov 23 at 8:34










          • Thank you very much Mukul. I'll try continuing with the Second.
            – KitKit
            Nov 23 at 8:56
















          Do you think the first or the second solution is good and easy for management? Or something else? Why, bro?
          – KitKit
          Nov 23 at 7:50




          Do you think the first or the second solution is good and easy for management? Or something else? Why, bro?
          – KitKit
          Nov 23 at 7:50




          1




          1




          @FeedGit I would prefer second solution for a simple chat application and use socket acknowledgement link and socket middle-ware link for authentication when socket connects.It will keep all the logic at one place.Hence easier to maintain.
          – Mukul Dev
          Nov 23 at 8:34




          @FeedGit I would prefer second solution for a simple chat application and use socket acknowledgement link and socket middle-ware link for authentication when socket connects.It will keep all the logic at one place.Hence easier to maintain.
          – Mukul Dev
          Nov 23 at 8:34












          Thank you very much Mukul. I'll try continuing with the Second.
          – KitKit
          Nov 23 at 8:56




          Thank you very much Mukul. I'll try continuing with the Second.
          – KitKit
          Nov 23 at 8:56


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53440785%2fhow-to-integrate-django-server-with-nodejs-socketio-server%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Contact image not getting when fetch all contact list from iPhone by CNContact

          count number of partitions of a set with n elements into k subsets

          A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks