gpt4 book ai didi

javascript - 使用node js库Socket io没有端口

转载 作者:行者123 更新时间:2023-12-02 17:46:07 24 4
gpt4 key购买 nike

所以我是nodeJs 和socket io 的初学者。我如何在我的服务器中安装这两者并制作一个示例聊天应用程序

所以它的工作原理就像......如果我访问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);
});
});

最佳答案

您应该考虑使用 nginx作为反向代理。将 nginx 放在前面有很多优点,比如它能够以极快的速度为您的静态文件提供服务。它还经过了实战测试,专为高并发性而构建,并使用相同的基于事件循环的 I/O 方法。当您想要扩展应用程序时,您可以轻松设置 nginx 以在应用程序集群之间实现负载平衡。

如果你想维护完整的 Nodejs 堆栈,你也可以看看 node-http-proxy并将其用作反向代理/负载均衡器。然而,nodejs 处理静态文件的效率并不高,因为它需要通过用户空间进行文件访问。 nginx 使用 sendfile(1) 绕过用户空间并直接与内核一起工作。

tl;博士

您需要反向代理

关于javascript - 使用node js库Socket io没有端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21756829/

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