nodejs+express开发的api,其中还是用ws服务,代码大致如下:
import ws from 'ws'//引入模块
const wss = new ws.Server({ port: 8080 },()=>{
console.log('创建websocket服务在8080端口')
})//创建一个WebSocketServer的实例,监听端口8080
wss.on('connection', async (ws, req) => {
// 实现自己的逻辑
}
项目同时也有express的服务,在入口文件index.ts中,引入websocket模块
import '@/router/websocket'
这样在项目启动时,就会启动websocket服务,如下:
现在就要配置nginx代理了,至于代理https我就不叙说了,网上一大堆,这里我说一下如何配置ws代理。
location /wss/ {
proxy_pass http://127.0.0.1:8080/; #websocket的项目
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
主要就是第一行代码,当访问wss目录时,就会跳转到内网的8080端口。
客户端连接代码如下:
const createWebSocket = () => {
try {
ws = new WebSocket(`wss://你的域名/wss/?token=${token.$state.access_token.key}`)
initWebSocket()
}
catch (e) {
console.log(e)
createWebSocket()
}
}
这样就能通过域名并且是ssl方式访问远程的websockt服务啦。