收藏
回答

小程序开发中不能使用第三方的websocket库吗?比如socket.io

如题

服务端已经用socket.io实现了一个了,现在对接小程序端,发现没办法直接使用,好像是socket.io有它自己的一套协议。要配置它专门的客户端库去使用。但是看了一下小程序的API,只能通过wx.connectSocket的方式去生成socket连接?

没办法直接用socket.io-client库吗?

回答关注问题邀请回答
收藏

2 个回答

  • Kent
    Kent
    2023-11-04

    折腾了一下,搜索了一其它朋友的问答,发现了一个叫‘weapp.socket.io’的库

    不过在使用它的时候还是有坑,不能直接使用官方的库。

    import io,{Socket} from 'weapp.socket.io'
    

    也就是这样写可能因为版本太旧,而不能正常工作

    要把源码下载下来,再重新编译出一个JS文件,然后直接在工程里引入这个JS文件

    import io,{Socket} from './weapp.socket.io.wx.js'
    


    另外分享一个点

    因为我的websocket服务是host到集群中,再通过nginx做了反向代理。比如我的nginx的端口是8080.而websocket服务的端口是9001. 在nginx中配置了一个 /chat路径的反向代理指向websocket服务

    如果我们直接使用

    io("http://localhost:8080/chat")
    

    这样会连接到一个名为/chat 的命名空间里。但是服务端并没有那个命名空间。这里的/chat只是为了nginx重定向用的。

    所以这里要改成

    io(http://localhost:8080,{path:"/chat/socket.io"})
    

    然后在nginx中配置重定向

     location /chat {
          rewrite ^/chat/(.*) /$1 break;
          proxy_pass http://host.docker.internal:9001;
          proxy_http_version   1.1;
          proxy_set_header Connection "";
          proxy_set_header Host       $host;
          proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
          proxy_set_header X-Real-IP  $remote_addr;
          proxy_set_header Upgrade    $http_upgrade;
          proxy_set_header Connection "upgrade";
          proxy_cache_bypass      $http_upgrade;
    }
    


    2023-11-04
    有用 1
    回复
  • showms
    showms
    2023-11-04

    小程序可以引npm 包,理论上可以,没试过

    2023-11-04
    有用
    回复
登录 后发表内容