AWS EC2上にてnode.jsを用いてサーバーを立てています。
別にローカル環境で実行したnodeのwebアプリと、EC2上のwebアプリ間でsocket.ioを使ってデータの送受信をやりたく、
EC2側→ローカルへの送信はできるのですが、逆のローカル→EC2側の方法がうまくいきません。
いい方法あれば教えていただけると幸いです。
下記のコードは、実際のコードから必要そうなところだけ抜粋して、
若干抽象的にしているので、もう少し詳細が必要であれば、追記させていただきます。
javascript
1(EC2 サーバー側js) 2var port = process.env.PORT || 3000, 3 http = require("http"), 4 express = require("express"), 5 app = express(), 6 server = http.createServer(app), 7 io = require('socket.io').listen(server) 8 9 10app.use(express.static(__dirname + "/html/")) 11server.listen(port); 12 13io.sockets.on('connection', function (socket) { 14 socket.on('test', function (val) { 15 socket.broadcast.emit("ec2_to_local", val); 16 }) 17}); 18
javascript
1(EC2 クライアント側js) 2var socket; 3$(document).ready(function () { 4 socket = io.connect(location.origin); 5 6 socket.emit('test',0); 7 8 socket.on("local_to_ec2", function (val) { 9 console.log("local_to_ec2 : " + val); 10 }) 11});
js
1(ローカル サーバー側js) 2var app = require('http').createServer(handler) 3var io = require('socket.io')(app); 4var port = process.env.PORT || 3000; 5const Max = require("max-api"); 6 7app.listen(port); 8 9io.on('connection', function (socket) { 10 socket.on('receive-test',(val)=>{ 11 console.log("val : " + val); 12 }) 13});
javascript
1(ローカル クライアント側js) 2var socket = io('http://xxx.xxx.xxx.xxx(EC2のip):3000'); 3var local = io(location.origin); 4 5socket.on('ec2_to_local',(index)=>{ 6 socket.emit('local_to_ec2',index); 7 local.emit('receive-test',index); 8}) 9
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/17 13:15 編集