Webアプリ制作初心者です.
node.js + herokuでWebアプリを作成しています.
サーバーサイド(node.js)で,あるサービスのAPIへアクセスし,それをJavaScriptでブラウザ上に描画するというものです.
デプロイしたURLで,正常にアプリは動いたのですが,全てのURLで処理が共有されてしまいます.
例えば,2つのタブでWebアプリを開いて,一方のタブで描画処理を行った場合,もう一方のタブでも描画処理が行われてしまいます.
処理をユーザーごと,もしくはタブごとに分けたいのですが,どのような方法があるでしょうか.
ご教授お願いいたします.
コードを追加しました. 2021/5/14 11:10
Js
1var socketio = io(); 2$(function(){ 3 $('#message_form').submit(function(){ 4 socketio.emit('message', "***"); //ブラウザでボタンが押されたらメッセージを送る 5 }); 6 socketio.on('output',function(msg){ //Nodeから返されたjsonを描画 7 draw(msg); //描画関数 8 }); 9});
Node
1var express = require('express'); 2var app = express(); 3var http = require('http').Server(app); 4const io = require('socket.io')(http); 5const PORT = process.env.PORT || 7000; 6 7app 8 .get('/', (req, res) => res.sendFile(__dirname+'/index.html')) 9 .use("/static", express.static(__dirname + "/static")) 10 11http.listen(PORT, function(){ 12 console.log('server listening. Port:' + PORT); 13}); 14 15io.on('connection',function(socket){ 16 socket.on('message',function(msg){ 17 get_json(); //ブラウザでボタンが押されたらget_json()を実行 18 }); 19}); 20 21const axios = require('axios'); 22var fs = require('fs'); 23var masterData_output = ""; 24 25function get_json(){ //APIへアクセスしてjsonを取得 26 (async () => { 27 try { 28 const response = await axios.get("api-url", { 29 headers: { 30 Cookie: "connect.sid=***" 31 }, 32 }); 33 masterData_output = JSON.stringify(response.data, null, ' '); 34 io.emit('output', masterData_output); 35 } catch (error) { 36 console.log(error); 37 } 38 })(); 39}
回答1件
あなたの回答
tips
プレビュー