4

これは、ここでよく話題になるエラーであることはわかっています。しかし、グーグル経由でいくつかの投稿が見つかった後でも、私の問題は解決しませんでした。

index.html に io JavaScript を含めようとすると、上記のエラーが発生します。

私は試しました: <script src="http://localhost:8080/socket.io/socket.io.js"></script> そして<script src="/socket.io/socket.io.js"></script>

さらに、ポートを 3000 に切り替えてみました。それでも問題は解決しません。

app.js を再起動し、socket.io を再インストールしようとしました (パッケージには含まれています) npm install socket.io。node_modules フォルダーに socket.io フォルダーが作成されていることがわかります。

次のようにサーバーを起動します。

var express = require('express');

var app = express(), 
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

app.listen(8080);

また、私のインデックスも Google から最新の jQuery を読み込みます。<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>

私の端末は、app.js を再起動すると socket.io が開始されることを示しています。

23 Jun 13:31:56 - [nodemon] starting `node app.js`
   info  - socket.io started

合計で私のindex.html(チュートリアルから再入力/再モデル化しました:http://psitsmike.com/2011/09/node-js-and-socket-io-chat-tutorial/

<script src="http://localhost:8080/socket.io/socket.io.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>

<script>

    var socket = io.connect();

    socket.on('connect', function() {
        socket.emit('adduser', prompt("Hoe heet je?"));
    });

    socket.on('updateChat', function(username, data) {
        $('#conversation').append('<strong>' + username  + '</strong> says: ' + data + '<br>');
    });

    socket.on('updateUsers', function(data) {
        $('#users').empty();
        $.each(data, function(k, v) {
            $("#users").append('<div>' + k + '</div>');
        });
    });

    $(document).ready(function() {
        $('#datasend').click(function() {
            //get the message and empty the input
            var msg = $('#data').val();
            $('#data').val('');

            //Let the server execute sendchat along with the msg
            socket.emit("sendChat", msg);
        });

        //ENTER key
        $('#data').keypress(function(e) {
            keyCode = (e.keyCode ? e.keyCode : e.which);
            if (keycode == 13) {
                $(this).blur();
                $('#datasend').focus().click();
            }
        });
    });

</script>
<div style="float:left;width:100px;border-right:1px solid black;height:300px;padding:10px;overflow:scroll-y;">
    <b>USERS</b>
    <div id="users"></div>
</div>
<div style="float:left;width:300px;height:250px;overflow:scroll-y;padding:10px;">
    <div id="conversation"></div>
    <input id="data" style="width:200px;" />
    <input type="button" id="datasend" value="send" />
</div>
4

1 に答える 1

17

In your code, change this

app.listen(8080);

to this

server.listen(8080);
于 2013-06-23T12:55:35.570 に答える