gpt4 book ai didi

node.js - 在真实的实时服务器中运行 socket.io 服务器,而不是本地主机?

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:38 28 4
gpt4 key购买 nike

我从教程点找到了一个编码,可以在本地主机中运行一个简单的socket.io聊天服务器,我安装了必要的环境,如nodejs、express、init package.json,并使用命令“node app.js”从终端启动了服务器”,然后我访问了本地主机中的索引页面,它显示了聊天页面,它工作正常。但问题是我想在我办公室的实时服务器中使用它,在办公室内聊天。这段代码足够了吗?我是这个socket.io 和nodejs 的新手。我的办公室有实时服务器来托管他们的网站,此代码打开并监听端口 3000。如果您能告诉我如何在真实服务器中运行它,这将非常有帮助。

Index.html

  <!DOCTYPE html>
<html>
<head>
<title>Hello world</title>
</head>

<script src = "/socket.io/socket.io.js"></script>
<script>
var socket = io();
function setUsername() {
socket.emit('setUsername', document.getElementById('name').value);
};
var user;
socket.on('userExists', function(data) {
document.getElementById('error-container').innerHTML = data;
});
socket.on('userSet', function(data) {
user = data.username;
document.body.innerHTML = '<input type = "text" id = "message">\
<button type = "button" name = "button" onclick = "sendMessage()">Send</button>\
<div id = "message-container"></div>';
});
function sendMessage() {
var msg = document.getElementById('message').value;
if(msg) {
socket.emit('msg', {message: msg, user: user});
}
}
socket.on('newmsg', function(data) {
if(user) {
document.getElementById('message-container').innerHTML += '<div><b>' +
data.user + '</b>: ' + data.message + '</div>'
}
})
</script>

<body>
<div id = "error-container"></div>
<input id = "name" type = "text" name = "name" value = ""
placeholder = "Enter your name!">
<button type = "button" name = "button" onclick = "setUsername()">
Let me chat!
</button>
</body>
</html>

app.js 服务器

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res) {
res.sendfile('index.html');
});

users = [];
io.on('connection', function(socket) {
console.log('A user connected');
socket.on('setUsername', function(data) {
console.log(data);

if(users.indexOf(data) > -1) {
socket.emit('userExists', data + ' username is taken! Try some
} else {
users.push(data);
socket.emit('userSet', {username: data});
}
});

socket.on('msg', function(data) {
//Send message to everyone
io.sockets.emit('newmsg', data);
})
});

http.listen(3000, function() {
console.log('listening on localhost:3000');
});

最佳答案

您可以通过nginx(反向代理服务器)解决您的问题。 Nginx 有 .conf 文件,其中包含服务器相关配置。

server { listen 3000; server_name io.yourhost.com; }

运行:

Sudo service nginx start

它将在给定的 IP 或域名上启动您的服务器。

关于node.js - 在真实的实时服务器中运行 socket.io 服务器,而不是本地主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49063402/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com