根据你们的这个贴子 https://forum.leancloud.cn/t/leanengine-websocket/1725我在服务器端添加了简单的websocket,在本地测试可以连接,但是放到云平台上去却连接错误,为什么呢?错误信息error: Error: unexpected server response (200)
您好,应该是代码有问题,我怀疑是您请求的结果是正常的 express 的路由,而不是 websocket 的路由。
木有啊,wscat -c ws://m.imzhimai.com/mssocketerror: Error: unexpected server response (200)
这里现在这个链接我去掉了。
是服务端的代码有问题,这个链接 ( http://m.imzhimai.com/mssocket ) 直接就可以用浏览器访问到。
应该是你的代码在挂载 websocket 的路由前就挂载了优先级更高的路由,导致路由被覆盖了。
哦,没注意到,谢谢了啊
不对啊,如果是这样的话,我在本地为什么能访问
是在 static 目录下有 index.html 文件?
有index文件
我去确认一下,这里本地和线上的行为应该是一致的。
另外现在还有问题了吗?
这个,你们有去检查么,我暂时移除了websocket这块代码,因为用不上啊 , 另外,我还没找到websocket怎么和leancloud的用户机制结合起来验证的方法,因为ws的request里取不到user
这个和自定义 Restfull API 是一样的,LeanCloud 没有提供现成机制来做用户授权,您可以手动来做这件事,比如创建 websocket 的请求的时候,把用户的 session token 放到请求头上(或者 body 里也没问题),然后调用 AV.User.become(sessionToken) 来获取用户对象。
也可以在连接成功之后,发送一个 session token 的包进行用户验证。
后续可能会提供现成的中间件来做这个操作。
好的,这样不会对LeanCloud自己的js请求造成影响吧? 调用 AV.User.become(sessionToken)
不会的,这个是公开的函数。
好的,我抽空再试试websocket,不过如果你们那边没有修改的话那应该还是用不了的。我本地没问题,只是deploy上去后就不成了。
这个应该没有问题的,我怀疑是后端代码逻辑有问题,可以把相关代码贴一下,或者私信给我帮您看一下~
你好,我也遇到了同样的问题,根据这个贴子 https://forum.leancloud.cn/t/leanengine-websocket/1725我在服务器端添加了简单的websocket,但似乎不能正常工作,一连上就断开。这是我的demo地址:http://ws-test.leanapp.cn/
您好,是是用的 https://github.com/leancloud/leanengine-websocket-demo 里的代码部署并且没有进行过修改的吗?
你好,并不是下载demo,我用lean new 初始化了一个node项目,然后根据demo做了如下:
麻烦先部署一下上面 repo 的代码来看看有没有同样的问题。