Javascript Node.js服务器从localhost更改为apache
我应该如何在apache服务器上运行node.js代码,该服务器当前正在使用localhost和apache服务器的端口5000,端口8080。 这是我的服务器端代码chatserver.jsJavascript Node.js服务器从localhost更改为apache,javascript,node.js,apache,Javascript,Node.js,Apache,我应该如何在apache服务器上运行node.js代码,该服务器当前正在使用localhost和apache服务器的端口5000,端口8080。 这是我的服务器端代码chatserver.js var httpd = require('http').createServer(handler); var io = require('socket.io').listen(httpd); var fs = require('fs'); httpd.listen(5000); function ha
var httpd = require('http').createServer(handler);
var io = require('socket.io').listen(httpd);
var fs = require('fs');
httpd.listen(5000);
function handler(req, res) {
fs.readFile(__dirname + '/index.html',
function(err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
}
);
}
io.sockets.on('connection', function (socket) {
socket.on('clientMessage', function(content) {
socket.emit('serverMessage', 'You said: ' + content);
socket.broadcast.emit('serverMessage', socket.id + ' said: ' +
content);
});
});
这是我的客户端代码。
index.html
<html>
<head>
<title>Node.js WebSocket chat</title>
<style type="text/css">
#input {
width: 200px;
}
#messages {
position: fixed;
top: 40px;
bottom: 8px;
left: 8px;
right: 8px;
border: 1px solid #EEEEEE;
padding: 8px;
}
</style>
</head>
<body>
Your message:
<input type="text" id="input">
<div id="messages"></div>
<script src="http://localhost:5000/socket.io/socket.io.js"></script>
<script type="text/javascript">
var messagesElement = document.getElementById('messages');
var lastMessageElement = null;
function addMessage(message) {
var newMessageElement = document.createElement('div');
var newMessageText = document.createTextNode(message);
newMessageElement.appendChild(newMessageText);
messagesElement.insertBefore(newMessageElement,
lastMessageElement);
lastMessageElement = newMessageElement;
}
var socket = io.connect('http://localhost:5000');
socket.on('serverMessage', function(content) {
addMessage(content);
});
var inputElement = document.getElementById('input');
inputElement.onkeydown = function(keyboardEvent) {
if (keyboardEvent.keyCode === 13) {
socket.emit('clientMessage', inputElement.value);
inputElement.value = '';
return false;
} else {
return true;
}
};
</script>
</body>
</html>
Node.js WebSocket聊天
#输入{
宽度:200px;
}
#信息{
位置:固定;
顶部:40px;
底部:8px;
左:8px;
右:8px;
边框:1px实心#EEEEEE;
填充:8px;
}
您的留言:
var messagesElement=document.getElementById('messages');
var lastMessageElement=null;
函数addMessage(消息){
var newMessageElement=document.createElement('div');
var newMessageText=document.createTextNode(消息);
newMessageElement.appendChild(newMessageText);
messagesElement.insertBefore(newMessageElement,
最后一个元素);
lastMessageElement=newMessageElement;
}
var socket=io.connect('http://localhost:5000');
socket.on('serverMessage',函数(内容){
添加消息(内容);
});
var inputElement=document.getElementById('input');
inputElement.onkeydown=函数(键盘事件){
if(keyboardEvent.keyCode==13){
emit('clientMessage',inputElement.value);
inputElement.value='';
返回false;
}否则{
返回true;
}
};
您需要使用httpd.conf文件中配置的反向代理。我使用nginx来实现这一点,因为它比apache2更快、更强大
这是我的nginx配置文件:
server {
listen 80;
server_name personal.dev.x.onmylemon.co.uk;
access_log /var/log/nginx/dev.x.oml.access.log;
error_log /var/log/nginx/dev.x.oml.error.log;
location / {
# This is the url to your node app on the localhost
proxy_pass http://localhost:30450;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffers 4 32k;
client_max_body_size 8m;
client_body_buffer_size 128k;
}
}
有一些关于在apache中设置反向代理的文档。可能与