前端在WebSocket中加入Token

文章介绍了在JavaScript中使用WebSocket时如何处理Token,提供了三种解决方案:1)在URL中携带参数;2)使用`send`方法发送Token;3)利用`Sec-WebSocket-Protocol`传递。同时警告了可能出现的错误和后端需要配合的地方。
摘要由CSDN通过智能技术生成

背景:

相信开发者你们已经遇到或者尝试过给WebSocket通过API去尝试修改请求头了

部分搭档后端同事甚至希望前端做到的是在Request Headers中authorization:Token

注意:JavaScript websocketAPI中并没有修改请求头的方法。

你只能另谋其路了

解决方式1:请求地址中带参数

const ws =  new WebSocket(`${location.protocol === 'https:' ? 'wss' : 'ws'}://${url}?${token}/websocket`)

解决方式2:send发送数据

const  ws = new WebSocket(`${location.protocol === 'https:' ? 'wss' : 'ws'}:${url}/websocket`)
ws.onopen=()=>{ws.send(token)}

解决方式 3:利用Sec-WebSocket-Protocol传递token

const url = `${location.protocol === 'https:' ? 'wss' : 'ws'}://${url}/websocket`
const token = localStorage.getItem('token')
const ws = new WebSocket(url, [token])

如果你出现这样的报错

ws.ts:68 Uncaught (in promise) DOMException: Failed to construct 'WebSocket': The subprotocol '"Token"' is invalid.

请处理一下你的Token 

const ws = new WebSocket(url, [JSON.parse(token)])

注意:在后端响应的时候也需要带上Token响应

当然如果你还有其他参数需要在头部传递,你也可以

const ws = new WebSocket(url, ['v10.stomp', 'v11.stomp', token])

题外话:如果后端强调需要你在Request Headers中authorization:Token挂载,你告诉他做不到即可。

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在Vue2项目前端使用WebSocket可以实现实时通讯和接收服务器主动发送的消息。在项目引入WebSocket的步骤如下: 1. 首先,需要创建一个WebSocket实例。可以使用前面提到的websocket.js代码的`websocket`方法来创建WebSocket对象。该方法返回一个Promise对象,用于处理连接成功或失败的情况。 2. 在Vue组件里引入WebSocket并建立连接。可以在组件的`created`生命周期钩子函数调用`websocket`方法来创建WebSocket实例。 3. 可以利用WebSocket提供的API来进行相应的操作,例如发送消息、接收服务器响应等。在Vue组件,可以通过监听WebSocket实例的相应事件来实现。 - 使用`ws.onopen`事件回调函数来处理连接成功后的操作。可以在回调函数进行一些初始化工作或发送初始消息。 - 使用`ws.onmessage`事件回调函数来处理从服务器接收到的信息。可以在回调函数处理接收到的消息,并根据需要更新页面或执行相应的操作。 - 使用`ws.onclose`事件回调函数来处理连接关闭后的操作。可以在回调函数执行一些清理工作或提示用户连接已关闭。 - 使用`ws.onerror`事件回调函数来处理连接失败的情况。可以在回调函数进行错误处理或提示用户连接失败。 4. 为了在窗口关闭时及时关闭WebSocket连接,可以监听窗口关闭事件,并在事件触发时调用`ws.close()`方法来关闭连接。 综上所述,在Vue2项目前端使用WebSocket可以通过创建WebSocket实例,监听相应事件来实现实时通讯和接收服务器主动发送的消息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [前端实现websocket通信讲解(vue2框架)](https://blog.csdn.net/wzy_PROTEIN/article/details/130947751)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值