在数据库请求方面,WebSockets可以取代AJAX吗?

时间:2017-11-16 18:52:43

标签: javascript php node.js ajax

这似乎是一个非常愚蠢的问题,但我目前正在将我的网站从使用EventSource Polling构造函数转换为在Node.js中实现的WebSocket标准。

最初,我网站上的所有后端都是用PHP处理的。随着Node.js的推出,我试图尽可能多地切换,而不是超出"标准"。按照标准,我的意思是通常我会看到WebSocket实现发送小数据,并接收小数据,然后执行数据库查询,然后将大量数据发送回客户端。

WebSockets可以在数据库请求时替换AJAX吗?

让我们考虑PHP/JavaScript (AJAX) vs Node.js/JavaScript (WebSockets)

中的小型hello world计划

PHP / JavaScript(AJAX)

// 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));

Node.js / JavaScript(WebSockets)

// 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处理更大的查询并向客户端发送大量数据的程度。这可以接受吗?

1 个答案:

答案 0 :(得分:1)

是的,从理论上讲,您可以使用websockets触发数据库查询。 HTTP和Websockets都是基于TCP构建的,它负责传输作为网络请求和响应之间桥梁的数据。

更大的问题是Websockets旨在减轻打开/关闭网络端口的负担,您必须为ajax做。这带来了几个应用级优势,包括实时媒体流。

如果您没有针对Web套接字的特定用例,那么坚持使用HTTP的好处是什么?构建的HTTP具有强大的工具生态系统 - HTTP主要是插件和插件。玩。想想安全和标准化之类的东西。 Web套接字是一种相对较新的技术,并没有开发出同样的生态系统。