ReferenceError:无法找到变量:io

时间:2018-05-15 17:26:56

标签: jquery html node.js socket.io directory-structure

我有以下文件夹结构 html 目录:i ndex.html,index.html public / js 目录: main.js,socket.js ,在根目录中我有 server.js

在server.js中我按如下方式设置了socket.io:

/*********************  WEBSOKETS ***************************/

    const io = require('socket.io')(https);

    io.on('connection', function (socket) {
        console.log('a user connected');
        socket.on('disconnect', function () {
            console.log('user disconnected');
        });
    });

    /************************************************ ***/

    io.on('connection', function (socket) {
        socket.on('chat message', function (msg) {
            console.log('message: ' + msg);
            io.emit('chat message', msg);
        });
    });

并在socket.js文件中处理它的客户端部分:

(function ($) {
    var socket = io().connect() // connect to the server

    $(function () {
        $('form').submit(function () {
            socket.emit('chat message', $('#m').val());
            $('#m').val('');
            return false;
        });
        socket.on('chat message', function (msg) {
            $('#messages').append($('<li>').text(msg));
            var happyEmoji = $('#messages').html().replace(/(\:\))/g, '&#x1F600;');
            $('#messages').html(happyEmoji);
            var sadEmoji = $('#messages').html().replace(/(\:\()/g, '&#x1F614;');
            $('#messages').html(sadEmoji);
        });
    });

})(jQuery的);

然后我得到了:

  

ReferenceError:无法找到变量:io

我还尝试直接放在我的 main.html 文件中,但我得到了同样的错误。我认为这是因为 main.html 位于 html d irectory中,并且无法直接访问服务器中的 io 。 js 这样。

如何解决?

1 个答案:

答案 0 :(得分:1)

您需要将此行插入main.html文件:

io

这会设置您的var socket = io(); 变量,以便您可以使用它:

{{1}}

更多信息和示例here