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

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

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

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

Socket.IO

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

Q&A

解決済

1回答

1442閲覧

Socket.ioを使った送受信ができません

pan2taicho

総合スコア19

Node.js

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

Socket.IO

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

0グッド

0クリップ

投稿2019/12/27 13:14

前提・実現したいこと

AWSでSocket.ioを使ってチャット機能を作っているのですが、Socket.ioがうまく動きません。

下記動画をそのままやっているつもりですが、動かず。
参考URL:https://dotinstall.com/lessons/basic_socketio/26404

発生している問題・エラーメッセージ

クライアント⇒サーバー へemitできません。
node app.js でwebサーバーを起動し、
ブラウザからhtmlは表示されるものの、送信ボタンを押しても何も起こらず。
動画によると、nodeを起動させたときにサーバー側で、info - socket.io started と表示されるらしいですが、それも表示されません(バージョンによっては表示されないのが正常?)。
また、ブラウザのconsoleからエラーログはありません。

該当のソースコード

javascript

1var app=require('http').createServer(handler), 2 io = require('socket.io').listen(app), 3 fs = require('fs'); 4app.listen(3000); 5function handler(req, res){ 6 fs.readFile(__dirname + '/index.html', function(err,data){ 7 if(err){ 8 res.writeHead(500); 9 return res.end('Error'); 10 } 11 res.writeHead(200); 12 res.write(data); 13 res.end(); 14 }) 15} 16io.sockets.on('connect_error',function(err){ 17 console.log(err); 18 console.log("aueo"); 19}); 20io.sockets.on('connection', function(socket){ 21 socket.on('emit_from_client',function(data){ 22 console.log(data); 23 socket.emit('emit_from_server', 'hello from server: ' + data); 24 console.log("aaa"); 25 }); 26}); 27console.log("eee");

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>Socket,IOの練習</title> 6</head> 7<body> 8 <form id="myForm"> 9 <input type="text" id="msg"> <input type="submit" value="Send!"> 10 </form> 11 <ul id="logs"></ul> 12 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> 13 </script> 14 <script src="/socket.io/socket.io.js"></script> 15 <script> 16 $(function(){ 17 var socket = io.connect(); 18 console.log(socket); 19 //emit: イベントを発信している 20 //on: イベントを待ち受けている 21 $('#myForm').submit(function(e){ 22 e.preventDefault(); 23 socket.emit('emit_from_clien',$('#msg').val()); 24 }); 25 socket.on('emit_from_server',function(data){ 26 console.log("Get from server!"); 27 $('#logs').append($('<li>').text(data)); 28 }); 29 }) 30 </script> 31</body> 32</html>

試したこと

var socket = io.connect();
console.log(socket);
で、中身があることは確認。
しかし、その後のio.sockets.on内のログは一切出力されず。

補足情報

ブラウザ:Chrome最新版(79.0.3945.88)、Firefox、IEでも試しました
Socket.io:2.3.0
Node.js:v12.14.0
サーバー:AWS EC2

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

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

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

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

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

guest

回答1

0

ベストアンサー

HTML側でsocket.emitの記述に1文字抜けがあります
emit_from_clientをつけてみてください

投稿2019/12/27 14:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

pan2taicho

2019/12/27 14:25

なんてこった・・・ すごい初歩的なミスでしたね、本当にありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問