在真实的服务器中运行socket.io服务器,而不是localhost?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在真实的服务器中运行socket.io服务器,而不是localhost?相关的知识,希望对你有一定的参考价值。
我发现教程中的编码指向在localhost中运行一个简单的socket.io聊天服务器,我安装了必要的环境,如nodejs,express,init package.json,我使用命令“node app.js”从终端启动服务器,然后我访问了我的localhost中的索引页面,它显示了聊天页面,它运行正常。但事情是我想用这个在我的办公室的实时服务器,在办公室内聊天。这段代码是否足够。我是这个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或域名上启动您的服务器。
通过var socket = io(Server IP + ':port');
更改声明变量套接字
例:
var socket = io('127.0.0.1:3000);
我使用socket.io版本2.0.2
以上是关于在真实的服务器中运行socket.io服务器,而不是localhost?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 上检查 socket.io 连接或断开连接?
需要在节点js,socket.io,express js,ionic 3的实时聊天应用程序中提供建议
React Native - iOS Real Device - Socket IO Web Sockets not working