本人用週末時間決定用socket作一個客服聊天功能(用戶能夠直接發消息,客服能夠收到全部人發的消息以及回覆),但在開發過程當中遇到了一些問題,特此總結javascript
在socket.io官網咱們會發現只有express的示例,然而在koa2中使用方式好像和express的代碼有些許不一樣前端
咱們打開koa2項目中的app.js
java
編寫以下代碼: express
這裏爲何要使用8777端口,若是咱們使用3000端口,就會和koa的端口衝突,因此這裏除了3000端口,其餘端口理論上均可以 若是使用了3000端口就會遇到以下圖所示的報錯: 到了這裏本來覺得要解決了,其實事情並無這麼簡單,咱們在前端引入socket.io的包,而後打開項目,發現控制檯一片紅 這裏要說一下,若是項目使用了jwt作驗證,須要對socket.io這個路徑作排除,否則會被jwt擋住,而後接下來就會遇到跨域問題,那麼koa2中的跨域如何解決? 咱們能夠引入koa2-cors,而後使用中間件的方式去解決跨域問題const cors = require('koa2-cors');
app.use(cors());
複製代碼
到了這裏差很少該遇到的問題就遇到的差很少了,前端中咱們能夠直接使用socket.emit,socket.on和服務端進行通訊了。跨域
第一次作socket應用,學到了不少東西,剛開始網上搜索的基本都是express相關,最後折騰了下仍是折騰出來了,但願這篇文章能夠幫到之後遇到相似問題的小夥伴!app