这似乎是一个非常愚蠢的问题,但我目前正在将我的网站从使用EventSource Polling构造函数转换为在Node.js中实现的WebSocket标准。
最初,我网站上的所有后端都是用PHP处理的。随着Node.js的推出,我试图尽可能多地切换,而不是超出"标准"。按照标准,我的意思是通常我会看到WebSocket实现发送小数据,并接收小数据,然后执行数据库查询,然后将大量数据发送回客户端。
WebSockets可以在数据库请求时替换AJAX吗?
让我们考虑PHP/JavaScript (AJAX)
vs Node.js/JavaScript (WebSockets)
// HelloWorld.php with Laravel in the Backend
Table::update([ 'column' => $_POST['message'] ]);
echo $_POST['message'];
具有自定义ajax函数的Ajax.js
Global.request("HelloWorld.php").post({
message: "Hello World"
}).then(message => alert(message));
// skip all the server setup
server.on('connection', function () {
server.on('message', function (message) {
sqlConnection.query("UPDATE `table` SET `column` = ?", [message], function () {
server.send(message);
});
});
});
WebSocket.js:
let socket = new WebSocket('ws://example.com');
socket.onmessage = function (message) {
alert(message)
}
socket.send("Hello World");
他们基本上都以同样的方式做同样的事情。现在,在这种规模下,使用WebSockets是没有意义的。虽然是一个例子,但想象一下它扩展到Node.js处理更大的查询并向客户端发送大量数据的程度。这可以接受吗?
答案 0 :(得分:1)
是的,从理论上讲,您可以使用websockets触发数据库查询。 HTTP和Websockets都是基于TCP构建的,它负责传输作为网络请求和响应之间桥梁的数据。
更大的问题是Websockets旨在减轻打开/关闭网络端口的负担,您必须为ajax做。这带来了几个应用级优势,包括实时媒体流。
如果您没有针对Web套接字的特定用例,那么坚持使用HTTP的好处是什么?构建的HTTP具有强大的工具生态系统 - HTTP主要是插件和插件。玩。想想安全和标准化之类的东西。 Web套接字是一种相对较新的技术,并没有开发出同样的生态系统。