Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Websocket失败。降级到Comet并重新发送_Java_Javascript_Atmosphere - Fatal编程技术网

Java Websocket失败。降级到Comet并重新发送

Java Websocket失败。降级到Comet并重新发送,java,javascript,atmosphere,Java,Javascript,Atmosphere,我正在使用Atmosphere framework 2.0.0.RC5来扩展具有websocket功能的web应用程序,遇到了一些奇怪的错误“websocket失败”。降级到Comet并重新发送,这是我无法逃避的 我使用websocket聊天示例作为起点: 该应用程序具有html+js客户端和java后端 后端 启用NIO协议的Tomcat 7.0.42 带有Spring和Atmosphere servlet的Web模块v3.0 自定义CORS过滤器,允许使用大气集管 服务器会记录收到的每条消

我正在使用Atmosphere framework 2.0.0.RC5来扩展具有websocket功能的web应用程序,遇到了一些奇怪的错误“websocket失败”。降级到Comet并重新发送,这是我无法逃避的

我使用websocket聊天示例作为起点:

该应用程序具有html+js客户端和java后端

后端

  • 启用NIO协议的Tomcat 7.0.42
  • 带有Spring和Atmosphere servlet的Web模块v3.0
  • 自定义CORS过滤器,允许使用大气集管
  • 服务器会记录收到的每条消息
(额外代码省略)

客户端

index.html

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="js/lib/jquery.atmosphere-2.0.2.js"></script>
<script type="text/javascript" src="js/aimpl.js"></script>
当我打开“index.html”时,我在控制台中看到一个错误(jquery.atmosphere-2.0.2.js第1097行),服务器日志中没有消息:

令人惊讶的是,当我直接在控制台中键入时,它会工作:

并由服务器记录,因此我假设服务器部分正常:


我猜这是一个javascript问题,但我不是100%确定。我玩了
connectTimeout
参数,但运气不好。你知道为什么它在脚本中不起作用吗

移动
频道。将
代码推到
onOpen
功能内

错误消息是在建立连接之前尝试发送数据的结果。

传输:“websocket”,
您有2个,打字错误,抱歉,已更正。请尝试使用默认注释,看看是否有效?
var request=new$.AtmosphereRequest();request.url=http://localhost:8181/services/echo';等。。
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="js/lib/jquery.atmosphere-2.0.2.js"></script>
<script type="text/javascript" src="js/aimpl.js"></script>
$(function() {
    "use strict";
    var socket = $.atmosphere;

    var request = {
        url: 'http://localhost:8181/services/echo',
        transport: "websocket",
        contentType: "application/json",
        //connectTimeout: '300000',
        fallbackTransport: 'long-polling',
        enableXDR: true,
        logLevel: 'debug'
    };

    request.onMessage = function (response) {
        console.log(response.responseBody)
    };

    request.onOpen = function(response) {
        console.log('Atmosphere connected using ' + response.transport);
    };

    request.onReconnect = function (request, response) {
        console.log("reconnecting...");
    };

    request.onError = function(response) {
        console.log('an error has occured.');
    };

    var channel = socket.subscribe(request);
    channel.push(JSON.stringify({ author: 'me', message: 'hello from websocket!' }));
});