网络请求
与在浏览器中一样,Kraken 下你可以使用 Fetch API 来发起 HTTP 请求,同时为了兼容一些支持旧款浏览器的 JS 库,Kraken 也支持使用 XMLHttpRequest。
对于全双工的通信,WebSocket 是更好的选择,Kraken 支持与 Web 一致的 WebSocket API (非默认能力需注册对应插件)。
与浏览器的差异
需要注意的是,从 Kraken 发起的网络请求不受跨域限制。
简单 HTTP 请求
你可以使用 Fetch API
在 Kraken 中发送 HTTP 请求:
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => console.log(json));
有时候你需要使用 POST 方式向 HTTP URL 发起请求,可以在 fetch 方法添加第二个可选参数:
const data = {
foo: 'bar',
};
fetch(url, {
body: JSON.stringify(data),
method: 'POST',
})
.then(response => response.json())
.then(json => console.log(json));
更多信息可以参考开发文档。
WebSocket
HTTP 的网络通信只能由客户端发起,而 WebSocket 则提供了双向通信的支持。WebSocket 的 API 基于事件通信的模型,在 Kraken 中只要提前加载 WebSocket 插件 就可以使用了。
const ws = new WebSocket('wss://echo.websocket.org');
ws.onopen = function(evt) {
console.log('Connection open ...');
ws.send('Hello WebSockets!');
};
ws.onmessage = function(evt) {
console.log('Received Message: ' + evt.data);
ws.close();
};
ws.onclose = function(evt) {
console.log('Connection closed.');
};
更多细节可以参考 开发文档。
使用 XMLHttpRequest
出于兼容性的考虑,XMLHttpRequest 在 Kraken 中也被支持。
以下为使用 XMLHttpRequest 的示例:
const xhr = new XMLHttpRequest();
xhr.addEventListener('load', function(event) {});
xhr.open('GET', 'https://jsonplaceholder.typicode.com/todos/1');
xhr.send();