NuxtJS + Socket.io + https
我希望在NuxtJS中以Socket.io為傳送資料的方式,不過功力有限連Socket.io都沒搞定。發現NuxtJS官方其實有實例是在https中運作。
不過事情當然沒這麼簡單,官方上沒有什麼說明,我也只好當成NuxtJS一樣安裝。
$ npm install nodemon
這個例子用了nodemon
作管理,我也直接照用好了
先安裝一下
$ npm run dev
啟動看一下
Socket.io不能通過https,瀏覽器會就說Mixed Content,就是https的頁面要取資料一定要經https才安全。
解決方法
想到解決的方法有兩個
- 把Socket.io變成https
- 令到Socket.io不用https也能通過
經過一輪測試才找到方法
因為NuxtJS官方版本是用https的,我曾在nuxt.config.js
內更改很多東西也不成,最後發現要修改如下
env: {
HOST_URL: process.env.HOST_URL || 'https://www.256pages.com'
}
沒錯!就是把http://localhost
直接換成你的https+domain
另外在Nginx中也要修改,在location/
中加入
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
這下子Socket.io就可以順利通過https了。