网络请求

与在浏览器中一样,Kraken 下你可以使用 Fetch API 来发起 HTTP 请求,同时为了兼容一些支持旧款浏览器的 JS 库,Kraken 也支持使用 XMLHttpRequest。

对于全双工的通信,WebSocket 是更好的选择,Kraken 支持与 Web 一致的 WebSocket API (非默认能力需注册对应插件)。

与浏览器的差异

需要注意的是,从 Kraken 发起的网络请求不受跨域限制。

简单 HTTP 请求

你可以使用 Fetch API 在 Kraken 中发送 HTTP 请求:

  1. fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(json => console.log(json));

有时候你需要使用 POST 方式向 HTTP URL 发起请求,可以在 fetch 方法添加第二个可选参数:

  1. 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 插件网络请求 - 图1 就可以使用了。

  1. const ws = new WebSocket('wss://echo.websocket.org');
  2. ws.onopen = function(evt) { console.log('Connection open ...'); ws.send('Hello WebSockets!');};
  3. ws.onmessage = function(evt) { console.log('Received Message: ' + evt.data); ws.close();};
  4. ws.onclose = function(evt) { console.log('Connection closed.');};

更多细节可以参考 开发文档

使用 XMLHttpRequest

出于兼容性的考虑,XMLHttpRequest 在 Kraken 中也被支持。

以下为使用 XMLHttpRequest 的示例:

  1. const xhr = new XMLHttpRequest();xhr.addEventListener('load', function(event) {});xhr.open('GET', 'https://jsonplaceholder.typicode.com/todos/1');xhr.send();