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

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

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

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

Socket.IO

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

Q&A

解決済

1回答

2065閲覧

socket.ioでのチャットアプリ実装

MikMik

総合スコア46

Node.js

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

Socket.IO

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

0グッド

0クリップ

投稿2018/04/09 06:26

node.jsとsocket.ioでチャットアプリを作成しようとしているのですが、以下のようなエラーが出てしまい、nodeでサーバーを立ち上げることができません。どのように対処すればよろしいのでしょうか?
ポート番号やサーバー部分は変更してあります。

throw er; // Unhandled 'error' event
^

Error: listen EADDRINUSE :::3000
at Server.setupListenHandle [as _listen2] (net.js:1345:14)
at listenInCluster (net.js:1386:12)
at Server.listen (net.js:1474:7)
at Object.<anonymous> (/home/ok-dev/nodeapp/app.js:7:4)
at Module._compile (module.js:649:30)
at Object.Module._extensions..js (module.js:660:10)
at Module.load (module.js:561:32)
at tryModuleLoad (module.js:501:12)
at Function.Module._load (module.js:493:3)
at Function.Module.runMain (module.js:690:10)
Emitted 'error' event at:
at emitErrorNT (net.js:1365:8)
at process._tickCallback (internal/process/next_tick.js:114:19)
at Function.Module.runMain (module.js:692:11)
at startup (bootstrap_node.js:194:16)
at bootstrap_node.js:666:3

js

1var fs = require("fs"); 2var server = require("http").createServer(function(req, res) { 3 res.writeHead(200, {"Content-Type":"text/html"}); 4 var output = fs.readFileSync("./index.html", "utf-8"); 5 res.end(output); 6}).listen(3000); 7var io = require("socket.io").listen(server); 8 9var userHash = {}; 10 11io.sockets.on("connection", function (socket) { 12 socket.on("connected", function (name) { 13 var msg = name + "が入室しました"; 14 userHash[socket.id] = name; 15 io.sockets.emit("publish", {value: msg}); 16 }); 17 18 socket.on("publish", function (data) { 19 io.sockets.emit("publish", {value:data.value}); 20 }); 21 22 socket.on("disconnect", function () { 23 if (userHash[socket.id]) { 24 var msg = userHash[socket.id] + "が退出しました"; 25 delete userHash[socket.id]; 26 io.sockets.emit("publish", {value: msg}); 27 } 28 }); 29});

html

1<html> 2<head> 3 <meta charset="UTF-8"> 4 <title>サンプルチャット</title> 5</head> 6<body> 7 <input type="text" id="msg_input" style="width:200px;" /> 8 <button onclick="publishMessage();">投稿</button> 9 <div id="msg"></div> 10 <script src="/socket.io/socket.io.js"></script> 11 <script type="text/javascript"> 12 var socketio = io.connect('http://123.456.789.012:3000/'); 13 14 socketio.on("connected", function(name) {}); 15 socketio.on("publish", function (data) { addMessage(data.value); }); 16 socketio.on("disconnect", function () {}); 17 18 function start(name) { 19 socketio.emit("connected", name); 20 } 21 22 function publishMessage() { 23 var textInput = document.getElementById('msg_input'); 24 var msg = "[" + myName + "] " + textInput.value; 25 socketio.emit("publish", {value: msg}); 26 textInput.value = ''; 27 } 28 29 function addMessage (msg) { 30 var domMeg = document.createElement('div'); 31 domMeg.innerHTML = new Date().toLocaleTimeString() + ' ' + msg; 32 msgArea.appendChild(domMeg); 33 } 34 35 var msgArea = document.getElementById("msg"); 36 var myName = Math.floor(Math.random()*100) + "さん"; 37 addMessage("貴方は" + myName + "として入室しました"); 38 start(myName); 39 </script> 40</body> 41</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

すでにそのポートが使用されているというエラーです。

https://qiita.com/kkam0907/items/65ceedbf3c71ae086838

投稿2018/04/09 06:32

k.tada

総合スコア1679

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

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

MikMik

2018/04/09 06:48

ご返答ありがとうございます。nodeサーバーを立ち上げることはできたのですが、常に読み込み状態になってしまいページを開くことができません。これは何故なのでしょうか?
k.tada

2018/04/09 08:14

それはまた別のエラーではないでしょうか。エラー内容をあげていただけないと判断出来ません。
MikMik

2018/04/09 08:16

申し訳ございません。サーバー自体は立ち上がっているのですが、常にロード状態となっていて何が原因なのかが不明な状態です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問