ReferenceError: Can't find variable: io
ReferenceError: Can't find variable: io
我有以下文件夹结构 html 目录:index.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, '😀');
$('#messages').html(happyEmoji);
var sadEmoji = $('#messages').html().replace(/(\:\()/g, '😔');
$('#messages').html(sadEmoji);
});
});
})(jQuery);
但后来我得到了:
ReferenceError: Can't find variable: io
我也尝试直接放在我的 main.html 文件中,但我得到了同样的错误。我认为这是因为 main.html 在 html d 目录中并且没有直接访问 io在server.js这样。
如何解决?
您需要将此行插入 main.html 文件:
<script src="/socket.io/socket.io.js"></script>
这会设置您的 io
变量,因此您可以使用它:
var socket = io();
更多信息和示例here。
我有以下文件夹结构 html 目录:index.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, '😀');
$('#messages').html(happyEmoji);
var sadEmoji = $('#messages').html().replace(/(\:\()/g, '😔');
$('#messages').html(sadEmoji);
});
});
})(jQuery);
但后来我得到了:
ReferenceError: Can't find variable: io
我也尝试直接放在我的 main.html 文件中,但我得到了同样的错误。我认为这是因为 main.html 在 html d 目录中并且没有直接访问 io在server.js这样。
如何解决?
您需要将此行插入 main.html 文件:
<script src="/socket.io/socket.io.js"></script>
这会设置您的 io
变量,因此您可以使用它:
var socket = io();
更多信息和示例here。