質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

Q&A

解決済

1回答

1091閲覧

socket.ioを使った別サーバーとのデータ送受信

nasymt

総合スコア39

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

0グッド

1クリップ

投稿2019/04/17 09:38

編集2019/04/17 09:47

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

AWSにはセキュリティグループというファイアウオールがあるんですが、それでブロックされているってことはないでしょうか

投稿2019/04/17 12:07

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nasymt

2019/04/17 13:15 編集

ご回答ありがとうございます。設定を確認したところ、 [インバウンド] HTTP 80、HTTPS 443、SSH 22、カスタムTCPルール 3000 [アウトバウンド] 全てのトラフィック となっておりました。nodeで使ってる3000は開けてるので問題はなさそうですが...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問