这可能是基于意见的,但我仍然怀疑是否有最佳实践,因为我对websocket实践几乎一无所知
我有一个从我自己获得JWT令牌的SPA OP.然后它使用该JWT连接到我使用REST和WebSockets的其他服务.
就REST来说,它非常简单:
Authorization: Bearer ...)并提供对受保护资源的访问,或者使用a响应401,让SPA知道它需要请求新令牌.现在有websockets:
在加载SPA期间,一旦我获得了令牌,我就打开了一个WS到我的web服务.我发送的第一条消息是login_message我的JWT,然后我保留在服务器的websocket实例上以了解谁在发送消息.我收到的每个后续消息,我都会验证JWT是否已过期.
据我所知,一旦它到期,我面临两个选择:
删除websocket时会token_expired出现某种错误,并在令牌刷新后强制浏览器建立新的websocket连接.
保持websocket打开,返回错误消息并发送新的登录消息(刷新令牌后)
不要使用登录消息,只需在每个请求中发送JWT.
问题:您会推荐哪种方法?为什么?在安全性和性能方面.我没有列出其他常见做法吗?
我有一个带有TypedArray成员的对象,我想冻结它以防止在设置后修改数据.试图冻结TypedArray或它的ArrayBuffer并没有像我预期的那样表现.我想知道,出于好奇,为什么它的行为方式如此.我正在运行节点4.4.4和Chrome,它的行为或多或少都相同.
var typedArray = new Uint32Array(4);
typedArray[0] = 10;
typedArray[1] = 20;
Object.freeze(typedArray);
// throws TypeError : Cannot freeze array buffer views with elements(...)
Run Code Online (Sandbox Code Playgroud)
我试过的下一件事就是冻结底层的ArrayBuffer
Object.freeze(typedArray.buffer); // Does not throws errors
Object.isFrozen(typedArray.buffer); // returns true
typedArray[0] = 50; // Successfully modifies the data, despite the buffer is frozen
Run Code Online (Sandbox Code Playgroud)
我知道我可以改变我的设计,不保留原始缓冲区,并在需要时从数据成员重建它.但我只是对这种行为感到好奇.
谢谢
对不起,如果这可能是基于意见的,但我希望有一个正确的答案..
应该在SVG文档中放置内联CSS样式?在我下面提供的示例中,我定义了两个样式和一个使用它们的圆.
第一个样式在defs标签内定义,第二个样式在svg标签内定义.
这两种样式都成功显示在圆圈上(至少在Chrome中他们这样做,但是没有检查其他浏览器).
我的问题是哪种方式更标准?
我认为保持样式defs可以使整个SVG更加整洁.但是,可以声称我不应该使用defs标签,因为没有人引用样式<use>
谢谢!
<svg height="100" width="100">
<defs id="someDefs">
<style id="style1">
.blue-fill {
fill : blue;
}
</style>
</defs>
<style id="style2">
.red-stroke {
stroke : red;
stroke-width : 12
}
</style>
<circle cx="50" cy="50" r="40" class="blue-fill red-stroke" />
</svg>Run Code Online (Sandbox Code Playgroud)