weapp-socketio / weapp.socket.io

A WebSocket client for building WeChat Mini Program implement by socket.io

Home Page:http://weappsocket.matong.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

transport 应该是polling 还是websocket

38602629 opened this issue · comments

遇到了什么问题?
我后端是用flask socketIO写的,通过iOS程序已经调试通过,下面的请求日志是iOS程序正常发起的
`127.0.0.1 - - [03/Sep/2020 19:55:40] "GET /socket.io/?EIO=3&transport=websocket HTTP/1.1" 400 122 0.000600
(12970) accepted ('127.0.0.1', 56788)

127.0.0.1 - - [03/Sep/2020 19:55:44] "GET /socket.io/?transport=polling&b64=1&uuid=74CE6F1A503AA7E0961B21B1EBFAF592&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJrb3VzdWFuIiwic3ViIjoiUVotNzRDRTZGMUE1MDNBQTdFMDk2MUIyMUIxRUJGQUY1OTItRDYifQ.5EkFBYsfiPfuK3_Nb65TX_64RsTo2HIZf10roESMcBA HTTP/1.1" 200 348 0.001828
(12970) accepted ('127.0.0.1', 56789)

127.0.0.1 - - [03/Sep/2020 19:55:44] "GET /socket.io/?transport=websocket&uuid=74CE6F1A503AA7E0961B21B1EBFAF592&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJrb3VzdWFuIiwic3ViIjoiUVotNzRDRTZGMUE1MDNBQTdFMDk2MUIyMUIxRUJGQUY1OTItRDYifQ.5EkFBYsfiPfuK3_Nb65TX_64RsTo2HIZf10roESMcBA&sid=e876a9668b504af68fb9c675b0488a90 HTTP/1.1" 400 122 0.000261
(12970) accepted ('127.0.0.1', 56790)

127.0.0.1 - - [03/Sep/2020 19:55:44] "POST /socket.io/?transport=polling&b64=1&uuid=74CE6F1A503AA7E0961B21B1EBFAF592&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJrb3VzdWFuIiwic3ViIjoiUVotNzRDRTZGMUE1MDNBQTdFMDk2MUIyMUIxRUJGQUY1OTItRDYifQ.5EkFBYsfiPfuK3_Nb65TX_64RsTo2HIZf10roESMcBA&sid=e876a9668b504af68fb9c675b0488a90 HTTP/1.1" 200 167 0.000396`

而小程序发起的请求永远都是如下
127.0.0.1 - - [03/Sep/2020 20:57:48] "GET /socket.io/?uuid=74CE6F1A503AA7E0961B21B1EBFAF592&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJrb3VzdWFuIiwic3ViIjoiUVotNzRDRTZGMUE1MDNBQTdFMDk2MUIyMUIxRUJGQUY1OTItRDYifQ.5EkFBYsfiPfuK3_Nb65TX_64RsTo2HIZf10roESMcBA&EIO=3&transport=websocket HTTP/1.1" 400 122 0.000536
其中我发现transport不一致,其他都保持了统一。

你的预期是什么?
我希望小程序发起的请求和iOS一样,是不是就可以正常连接上服务器了呢?我是在模拟器运行的,而不是真机。
服务器端namespace 是kousuan ,我小程序的代码如下:

`
const io = require('../../../utils/weapp.socket.io.dev') //加载js文件

const socket = io('ws://localhost:5000/kousuan',{
  // path: '/socket.io',
  // transports: ['websocket'],
  query: {
    uuid: '74CE6F1A503AA7E0961B21B1EBFAF592',
    token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJrb3VzdWFuIiwic3ViIjoiUVotNzRDRTZGMUE1MDNBQTdFMDk2MUIyMUIxRUJGQUY1OTItRDYifQ.5EkFBYsfiPfuK3_Nb65TX_64RsTo2HIZf10roESMcBA'
  }
}) //链接域名

socket.on('connect', () => {
  console.log(socket.connected); // true
  console.log(socket.id); // 'G5p5...'
});

`

截图:

项目版本号:�

  • Version [e.g. 22]

微信开发者工具

  • 版本号:[e.g. 22]
  • 电脑 OS:[e.g. Windows 10]

真机环境 (请完成填充下面的条码):

  • Device: [e.g. iPhone6]
  • OS 版本: [e.g. iOS8.1]
  • 微信版本 [e.g. 22]

附加信息:

会不会是localhost的问题

问题解决了,原因是这个库不支持polling模式,只支持websocket模式,所以需要后端服务支持websocket模式,iOS的socketIO库是支持polling模式和websocket模式的,Android目前不知道,总而言之,需要后端提供支持websocket模式即可,要不然就通不了