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

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

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

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

Socket.IO

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

解決済

node.js の socket.io listen でエラーが発生します。

nemui_akubi
nemui_akubi

総合スコア11

Node.js

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

Socket.IO

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

1回答

0評価

0クリップ

3596閲覧

投稿2021/05/01 21:30

編集2021/05/01 21:34

前提・実現したいこと

webの勉強のため、以下のサイトを見て写経しようと思いました。
https://www.atmarkit.co.jp/ait/articles/1603/14/news015_2.html

node.jsを起動しようとしたところ、以下のメッセージが発生しました。

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

PS C:\hogehoge\node> node app.js C:\hogehoge\node\app.js:9 var io = socketio.listen(server); TypeError: socketio.listen is not a function at Object.<anonymous> (C:\hogehoge\node\app.js:9:19) at Module._compile (internal/modules/cjs/loader.js:1063:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) at Module.load (internal/modules/cjs/loader.js:928:32) at Function.Module._load (internal/modules/cjs/loader.js:769:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) at internal/main/run_main_module.js:17:47

該当のソースコード

app.js

javascript

var http = require('http'); var socketio = require('socket.io'); var fs = require('fs'); var server = http.createServer(function(req, res) { res.writeHead(200, {'Content-Type' : 'text/html'}); res.end(fs.readFileSync(__dirname + '/index.html', 'utf-8')); }).listen(3000); // ポート競合の場合は値を変更 var io = socketio.listen(server); io.sockets.on('connection', function(socket) { socket.on('client_to_server', function(data) { io.sockets.emit('server_to_client', {value : data.value}); }); });

index.html

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>websocket-chat</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script type="text/javascript" src="/socket.io/socket.io.js"></script> </head> <body> <div class="container"> <h1>WebSocket-Chat</h1> <form class="form-inline"> <div class="form-group"> <label for="msgForm">メッセージ:</label> <input type="text" class="form-control" id="msgForm"> </div> <button type="submit" class="btn btn-primary">送信</button> </form> <div id="chatLogs"></div> </div> <script type="text/javascript"> var socket = io.connect(); socket.on("server_to_client", function(data){appendMsg(data.value)}); function appendMsg(text) { $("#chatLogs").append("<div>" + text + "</div>"); } $("form").submit(function(e){ var message = $("#msgForm").val(); $("#msgForm").val(''); socket.emit("client_to_server", {value : message}); e.preventDefault(); }); </script> </body> </html>

試したこと

socket.ioの導入が失敗しているのかと思いましたが、
2行目の「var socketio = require('socket.io');」でオブジェクトが
生成されているので、昨日一日行き詰っていました。

補足情報(FW/ツールのバージョンなど)

  • node.jsのバージョン:v14.16.1
  • npmのバージョン:6.14.12

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Node.js

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

Socket.IO

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。