连接成功了,但是发送消息发不出去

alonecarr

首先建立websocket连接ws = new WebSocket("ws://" + document.domain + ":8066");,用ws.readyState判断是连接成功了,而且服务端也能查到连接,但是ws.send("ssssssssssssssssssssssssss");的时候,用ws.bufferedAmount判断一直发送不出去。还请大神帮忙解答下,困惑了好长时间了,多谢!

11455 4 0
4个回答

alonecarr

ws.onerror = function(event) {
    console.log(event);
};

接收,又接收不到报错信息,很是郁闷啊!

  • 暂无评论
walkor 打赏

bufferedAmount 有值不代表会报错,也不代表发送失败,只是在排队等待而已

  • alonecarr 2017-09-04

    那怎么判断是发送失败还是其他原因呢,现在客户端发送服务端接收不到

alonecarr

客服端代码:

[attach]752[/attach]

服务端代码:

[attach]753[/attach]

  • 暂无评论
walkor 打赏

如果服务端收不到可能是业务在哪里把连接关闭了,或者其它误判等原因。
你可以下载个http://www.workerman.net/workerman-chat试下,ok的话在此基础上改你要的功能。

  • alonecarr 2017-09-04

    workerman-chat试也还是不行,只显示
    websocket握手成功,发送登录数据:{"type":"login","client_name":"ssasasass","room_id":"1"},并没有登录成功提示,也就是登录的消息是到达不了服务端的

  • alonecarr 2017-09-04

    workerman-chat其实也是在gateway workers基础上做的,我写的也是,一样,业务过滤是没有的,因为我在刚开始接收消息的时候就打印日志的,是没有接收到的,但是握手始终是成功的,还有一点就是,实际上服务端往客户端ping的消息是能接收到的,但是客户端往服务端回应的消息就收不到了。

  • walkor 2017-09-04

    你那里workerman-chat没法聊天么?你用debug方式运行(启动时不加-d)看看服务端有没有什么报错

  • alonecarr 2017-09-04

    没有报错,debug在发送消息时候什么反应都没有

  • alonecarr 2017-09-04

    workerman-chat也不能聊天,提示 websocket握手成功,发送登录数据:{"type":"login","client_name":"ssasasass","room_id":"1"},之后就没提示了,没登录成功

  • alonecarr 2017-09-04

    我在想如果是网络原因的话,为什么握手能成功,但是消息接收不到

  • walkor 2017-09-04

    有可能是环境问题。这样的问题从来没遇到过,也没有人反馈过这个问题。

  • alonecarr 2017-09-04

    但是内网直接用ip是可以的,都是正常的,这个服务器实际上是内网服务器,外网有映射ip和域名,会不会可能是路由的问题

  • alonecarr 2017-09-04

    对网络底层不怎么了解,我在想如果是网络原因,握手是不是也不会成功啊

  • alonecarr 2017-09-04

    麻烦问下onMessage在workman的入口的地方(接收数据包的地方)是在哪,我想看下在那边是不是都接收不到包的信息

  • alonecarr 2017-09-05

    @1:解决了,是因为服务器网络那边设置的不支持websocket协议通信,多谢啦

  • walkor 2017-09-05

    哪里的网络设置?

年代过于久远,无法发表回答
×
🔝