Add authorization
,在弹出的对话框中填入用户名密码便可。ws://...
方式访问,所以网上的一些websocket测试工具都没法使用,只能自行编写socket.io客户端程序来链接、测试使用这个客户端链接IOTQQ的接口须要三个步骤:javascript
Connect
Event name
输入框依次输入OnGroupMsgs
, OnFriendMsgs
, OnEvents
,并点击Listen
Emitting
面板,在Event name
输入框中输入GetWebConn
,并在下面的Data: plaintext
文本框中输入登陆QQ号,必定加上双引号,而后点击Emit
http://host:port/socket.io/?EIO=3&....
,所以,咱们能够优化前一文中的nginx配置,把location设定的更加精准,避免直接匹配根路径。综上,能够以下优化nginx.conf:css
... gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 5; gzip_types text/plain text/xml text/css text/javascript application/javascript application/x-javascript application/json application/xml image/jpeg image/gif image/png image/svg+xml; gzip_vary off; gzip_disable "MSIE [1-6]\."; ... location /socket.io/ { if ($http_authorization != "Basic aW90cXE6MTIzNDU2Nzg=") { return 401; } proxy_http_version 1.1; proxy_pass http://localhost:8888; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
通过以上配置,websocket也须要提供Authorization头才能正常链接,须要以下修改程序:java
const Authorization = 'Basic ' + Buffer.from(`${user}:${pass}`).toString('base64') const socket = io(WS_API, { transports: ['websocket'], extraHeaders: { Authorization } })