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 } })