所以我是nodeJs和socket io的完全初学者。我在服务器上安装了两个例子chat application
。
所以它就像..如果我访问http://domain.com:3000
一切正常......但是有可能只在其他地方上传index.html例如http://domain.com/chat/
并在客户端插入如下代码文件。
var connection = new WebSocket('ws://domain.com:3000');
我的客户代码
<html>
<head>
<title>Chat with socket.io and node.js</title>
<style>
#chat{
height:500px;
}
</style>
</head>
<body>
<div id="chat"></div>
<form id="send-message">
<input size="35" id="message"></input>
<input type="submit"></input>
</form>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
jQuery(function($){
var socket = io.connect();
var $messageForm = $('#send-message');
var $messageBox = $('#message');
var $chat = $('#chat');
$messageForm.submit(function(e){
e.preventDefault();
socket.emit('send message', $messageBox.val());
$messageBox.val('');
});
socket.on('new message', function(data){
$chat.append(data + "<br/>");
});
});
</script>
</body>
</html>
我的服务器代码
var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
server.listen(3000);
app.get('/', function(req, res){
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function(socket){
socket.on('send message', function(data){
io.sockets.emit('new message', data);
});
});
答案 0 :(得分:2)
您应该考虑使用nginx
作为反向代理。将nginx
放在前面有很多好处,比如能够快速提供静态文件的能力。它还经过测试,针对高并发性而构建,并使用相同的基于事件循环的I / O方法。如果您想扩展自己的应用,可以轻松设置nginx
以在应用群集之间实现负载平衡。
如果您想维护一个完整的Nodejs堆栈,您还可以查看node-http-proxy
并将其用作反向代理/负载均衡器。但是,由于需要通过用户空间进行文件访问,因此nodejs对于静态文件的效率并不高。 nginx
使用sendfile(1)
绕过用户空间并直接使用内核。
您需要反向代理