У меня есть следующая структура папок 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, '😀');
$('#messages').html(happyEmoji);
var sadEmoji = $('#messages').html().replace(/(\:\()/g, '😔');
$('#messages').html(sadEmoji);
});
});
}) (Jquery);
но тогда я получаю:
ReferenceError: Невозможно найти переменную: io
Я также пытался поместить непосредственно в мой файл main.html , но я получаю ту же ошибку. Я думаю, это потому, что main.html находится в директории html d и не имеет прямого доступа к io в server.js таким образом.
Как это решить?