Я сделал node.js приложение, которое хочу развернуть в Heroku.
Оно отлично работает локально. Но мне трудно разобраться в руководствах о том, как переписать код, который делает приложение подходящим для развертывания.
У меня есть сервер. js файл и скрипт. js файл , Сервер получает данные от всех пользователей и передает их всем подключенным пользователям. Так что это чат.
Вот сервер. js файл.
const io = require('socket.io')(3000)
const users = {}
io.on('connection', socket => {
socket.on('new-user', name => {
users[socket.id] = name
socket.broadcast.emit('user-connected',name)
})
socket.on('send-chat-message', message => {
socket.broadcast.emit('chat-message', { message: message, name:
users[socket.id]})
})
socket.on('disconnect', name => {
socket.broadcast.emit('user-disconnected', users[socket.id])
delete users[socket.id]
})
})
Мой скрипт. js файл
const socket = io('http://localhost:3000')
const messageContainer = document.getElementById('message-container')
const messageForm = document.getElementById('send-container')
const messageInput = document.getElementById('message-input')
const name = prompt('what is your name?')
appendMessage('you joined')
socket.emit('new-user',name)
socket.on('chat-message', data=> {
appendMessage(`${data.name}: ${data.message}`)
})
socket.on('user-connected', name=> {
appendMessage(`${name} connected`)
})
socket.on('user-disconnected', name=> {
appendMessage(`${name} disconnected`)
})
messageForm.addEventListener('submit',e=>{
e.preventDefault()
const message = messageInput.value
appendMessage(`You: ${message}`)
socket.emit('send-chat-message', message)
messageInput.value = ''
})
function appendMessage(message) {
const messageElement = document.createElement('div')
messageElement.innerText = message
messageContainer.append(messageElement)
}
И я знаю, что проблема заключается в том, что только код способен работать локально. И я должен как-то изменить это, чтобы оно работало на Heroku. В нескольких видеороликах на YouTube я увидел, что вместо номера порта используется «process.env.PORT». Я пытался поменять их, но безуспешно.