我剛剛開始后端學習,我設法用 nodejs 撰寫了一些簡單的東西,但我也想在其他計算機上測驗我的東西并將其展示給其他人 - 即使是一段時間,只是為了學習目的。
例如,我有這個代碼
//server.js
const mongoose = require('mongoose');
const Msg = require('./models/messages')
const io = require('socket.io')(3000, {
cors: {
origin: "*"
}
})
const mongoDB = 'mongodb srv://12345678:[email protected]/message-database?retryWrites=true&w=majority'
mongoose.connect(mongoDB).then(() => console.log('connected'))
const users = {};
io.on('connection', (socket) => {
console.log('new user');
Msg.find().then(result => {
socket.emit('output-message', result);
})
socket.on('username', myname => {
users[socket.id] = myname;
socket.broadcast.emit('user-connected', myname)
})
socket.on('send-chat-message', message => {
const msg = new Msg({message:message, user:users[socket.id]});
msg.save().then(() => {
socket.broadcast.emit('chat-message', {message:message, name:users[socket.id]})
})
})
})
//script.js
const socket = io('http://localhost:3000');
var messageContainer = document.getElementById('message-container')
var messageForm = document.getElementById('send-container')
var myname = prompt('Qual é o seu nome?');
appendMessage('You joined')
socket.emit('username', myname);
socket.on('chat-message', data => {
appendMessage(`${data.name}: ${data.message}`);
})
socket.on('output-message', data => {
for(let i = 0; i < data.length; i ) appendMessage(`${data[i].user}: ${data[i].message}`);
console.log(data)
})
socket.on('user-connected', myname =>
{appendMessage(`${myname} connected`)}
)
messageForm.addEventListener('submit', e => {
e.preventDefault();
const message = document.getElementById('message-input').value;
socket.emit("send-chat-message", message);
appendOwnMessage(`You: ${message}`);
document.getElementById('message-input').value = '';
})
function appendMessage(message) {
const a = document.createElement('div');
const b = a.appendChild(document.createElement('p'))
b.innerText = message;
b.setAttribute("class", "received")
messageContainer.append(a)
}
function appendOwnMessage(message) {
const a = document.createElement('div');
const b = a.appendChild(document.createElement('p'));
b.innerText = message;
b.setAttribute("class", "sent")
messageContainer.append(a)
}
<script defer src='http://localhost:3000/socket.io/socket.io.js'></script>
<script defer src='script.js'></script>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id='test'></div>
<div id= 'message-container'></div>
<div id='test'></div>
<form id='send-container'>
<input id="message-input" type='text'>
<button type='submit' id='send-button'>Send</button>
</form>
(抱歉這么久)是否可以生成其他計算機上的人可以訪問的 URL?我可以學到什么來實作這一目標?
uj5u.com熱心網友回復:
您可以將家庭路由器配置為將連接重定向到您的個人計算機,以便在特定埠上進行連接(3000在您的情況下)。
這通常是通過位于您的網路網關(最常見192.168.0.1)的 WebApp 完成的。
此功能主要稱為類似Port Forwarding. 然后,您可以通過谷歌搜索輕松找到您的公共 IP 地址。
但是,除非您知道自己在做什么,否則不建議這樣做,因為將計算機暴露在互聯網上可能是不安全的。
我寧愿推薦使用像ngrok這樣的工具,它可以通過他們的網路在本地機器上創建通往您選擇的埠的隧道。這不僅更快,而且更安全。
如果您正在尋找一個更永久的解決方案,也許是使用自定義域,那么您應該尋找網站托管解決方案。絕不建議在您的家用機器上運行生產網站。
uj5u.com熱心網友回復:
嘿,我不確定這是否是您要查找的內容,但您可以在https://replit.com/上創建一個帳戶并將您的代碼放在那里。你也可以將它匯入到 replit 中,例如 github :) 我希望這可以幫助你 :) 上傳的專案你也可以與其他人分享。
這是您的專案在此處的外觀的螢屏截圖:
在此處輸入影像描述
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/405569.html
標籤:
上一篇:如何優化mongodb聚合查詢
下一篇:如何在貓鼬中用鍵值遞減值
