Я новичок в node.js, хочу запустить простой чат с помощью сервиса heroku и библиотеки socket.io. Я подключил heroku к своему репозиторию и начал сборку. Все прошло как надо. Но как это запустить на сервере heroku? Данный код не работает на сервере heroku.
Локально код отрабатывает как надо.
const express = require('express');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('disconnect', () => {
console.log('user disconnected')
});
socket.on('chat message', (msg) => {
io.emit('chat message', msg);
})
socket.broadcast.emit('hi')
});
http.listen(3000, () => {
console.log('listening on *:3000');
});
<!DOCTYPE html>
<html lang="en">
<head>
<title>Socket.IO chat</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font: 13px Helvetica, Arial;
}
form {
background: #000;
padding: 3px;
position: fixed;
bottom: 0;
width: 100%;
}
form input {
border: 0;
padding: 10px;
width: 90%;
margin-right: .5%;
}
form button {
width: 9%;
background: rgb(130, 224, 255);
border: none;
padding: 10px;
}
#messages {
list-style-type: none;
margin: 0;
padding: 0;
}
#messages li {
padding: 5px 10px;
}
#messages li:nth-child(odd) {
background: #eee;
}
</style>
</head>
<body>
<ul id="messages"></ul>
<form id="form" action="">
<input id="m" autocomplete="off" />
<button>Send</button>
</form>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
const form = document.getElementById('form');
let inpitVal = document.getElementById('m');
const messagesContainer = document.getElementById('messages');
form.addEventListener('submit', (e) => {
e.preventDefault();
if (inpitVal.value) {
socket.emit('chat message', inpitVal.value);
inpitVal.value = '';
return false;
}
})
socket.on('chat message', (msg) => {
const message = document.createElement('li');
message.innerHTML = msg;
messagesContainer.appendChild(message);
})
</script>
</body>
</html>
Вообще, я имею ровно такую же проблему, но судя по вашему коду, вы постоянно загружаете свой node сервер на 3000ом порте! Если же говорить про хост heroku, то при запуске, он дает свой порт, который доступен в переменной:
const PORT = process.env.PORT || 3000;
Возможно это и не поможет, но попытка не пытка!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Здраствуйте! Пишу сайт по продаже косметики для портфолиоСам сайт написан полностью на чистом javascript
Подскажите нюанс работы с Adobe Animate HTML5 Сanvas?
Как с помощю библиотеки react-spring или просто с помощю react и css , сделать анимацию после анимацииК примеру у меня есть div и я хочу сначала увеличить...