web前端

用 Shared Workers减少 WebSocket 连接数

支持中经常提出的一个问题是如何减少并发 Pusher 连接并避免与您的计划相关的任何限制。鉴于每当您的页面在新选项卡中加载时都会创建与我们的 API 的新连接 - 如果客户可以跨多个选项卡共享单个连接,这将对客户非常有利。解决方案?在共享工作线程中使用 Pusher ,我们可以为每个浏览器窗口仅保留一个 Websocket 连接。这样,如果您的用户在多个选项卡中打开您的应用程序,您就可以保持较低的连接数。这篇博文将为您提供有关如何设置的分步指南。如果您在任何时候遇到困难,请随时查阅我们在 Github 上的示例

        

ServiceWorker、MessageChannel 和 postMessage

上周我写了一篇关于渐进式网络的缓存策略的文章,该策略首先使用缓存,然后进入网络,在网页之间共享消息并ServiceWorker协调对缓存内容的更新。swivel今天我将描述用于简化 ServiceWorkers 消息传递的库的内部工作原理。

事实证明,您可以通过多种不同的方式在 aServiceWorker及其控制的网页之间共享消息。
  • 客户端可能想要向a 发送消息ServiceWorker、询问某事或通知某事– 这是“单播”(1 对 1)
  • A可能想要向客户端ServiceWorker发送回复– 单播
  • AServiceWorker可能想要向其控制下的每个客户端发送更新– 一条“广播”(一对多)消息
  • AServiceWorker可能想要向发起请求的客户端发送更新– 单播

客户端页面和 Service Worker 之间的双向通信

Workbox 和 Preact 都与这个问题没有太大关系。Workbox 允许您在 Service Worker 中使用您想要的任何其他代码,而 Preact 也应该适用于您的客户端应用程序。)

此示例页面演示了使用 来从客户端页面向服务工作人员发送消息,然后进行响应MessageChannel。客户端页面上使用的相关帮助程序代码如下所示:

function sendMessage(message) {
  return new Promise(function(resolve, reject) {
    const messageChannel = new MessageChannel();
    messageChannel.port1.

Service worker 如何与客户端通信

问题:

我一直在尝试从服务人员向客户发送消息,但是如果我使用

self.clients.matchAll()
.then((clients) => {
  clients.forEach(function(client) {
    client.postMessage({msg: 'Hello from SW'})
  })
})

即使我在浏览器中打开了一个选项卡,它也不会发送到任何客户端,但是如果我从客户端服务工作者发送消息

// client
navigator.serviceWorker.controller.postMessage({title: 'Send message from client'})

并在服务人员中

self.addEventListener('message', function(event) {
  self.clients.fetchAll()
    .then((clients) => {
      clients.forEach(function(client) {
        client.postMessage({msg: 'Hello from SW'})
     })
  

WebSocket 安全性:8 大漏洞及其解决方法

什么是 WebSocket?

WebSocket 变得越来越流行,因为它们极大地简化了客户端和服务器之间的通信。 

WebSocket 协议使用 OSI 模型应用层(第 7 层)来允许客户端和服务器执行双向(全双工)通信。这使得创建动态、实时的 Web 应用程序(例如即时消息和照片共享应用程序)成为可能。

Input elements should have autocomplete attributes

浏览器console 报

[DOM] Input elements should have autocomplete attributes (suggested: "current-password"): 

解决:

尝试改变

<input type="password" name="password">

<input type="password" name="password" autocomplete="on">

自动完成功能可让 Web 开发人员指定用户代理在填写表单字段值时提供自动帮助的权限(如果有),以及向浏览器提供有关字段中预期信息类型的指导。

 …