Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angular – Websocket在localhost上工作但不是Heroku大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用websockets的应用程序(STOMP over SockJs),后端有 Spring.应用程序在tomcat上的localhost上工作正常(websockets)但是当我部署到Heroku或AWS Web Sockets停止工作时.
我在Angular2中的websocket配置
let sockjs = new SockJS('/rest/add?jwt=' + this.authservice.getToken(),{"devel":true,"debug":truE},{"transports":["websocket"]});

我也尝试过

{"disabled_transports":["websocket"]}

但两者都失败了.
web.xml中

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLscheR_655_11845@a-instance"
     xsi:scheR_655_11845@aLOCATIOn="http://xmlns.jcp.org/xml/ns/javaee
     http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     version="3.1">

<context-param>
    <param-name>spring.profiles.default</param-name>
    <param-value>default</param-value>
</context-param>

<servlet>
    <servlet-name>ws</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLOCATIOn</param-name>
        <param-value>classpath:/spring/ws-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>ws</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegaTingFilterProxy</filter-class>
    <async-supported>true</async-supported>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/rest/*</url-pattern>

</filter-mapping>
</web-app>

春天的websocket

<websocket:@R_607_8798@ge-broker
    application-desTination-prefix="/app">
    <websocket:stomp-endpoint path="/add">
        <websocket:sockjs/>
    </websocket:stomp-endpoint>
    <websocket:simple-broker prefix="/topic,/queue" />
</websocket:@R_607_8798@ge-broker>

在Heroku上的应用程序的URL,因此您可以在Web浏览器的控制台中自行检查.
Link
请看更新的日志,这件事让我担心没有TransportHandler

CJyb2xlcyI6IkNVU1RPTUVSIn0.wFqNOduN-lD1-9GIRnG1X1aLJZTxtz9c6vmO7jmPPiE2017-04-06T16:23:32.439917+00:00 app[web.1]: 2017-04-06 16:2332 WARN  DefaultSockJsservice:239 - No TransportHandler for http://myapp-ws.herokuapp.com/rest/add/097/eyocvxic/websocket?jwt=eyJhbGciOiJI
@H_502_23@
@H_502_23@
好的,所以最后我让它工作了.原来,heroku上的tomcat没有标准的库集.
首先,我在webapp-runner https://devcenter.heroku.com/articles/java-webapp-runner上本地部署,之后我看到一个奇怪的错误.我测试了几个库,最后添加
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-websocket</artifactId>
    <version>8.5.11</version>
</dependency>

<build>
...
<plugins>
    ...
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.3</version>
        <EXECUTIONS>
            <execution>
                <phase>package</phase>
                <goals><goal>copy</goal></goals>
                <configuration>
                    <artifactItems>
                        <artifactItem>
                            <groupId>com.github.jsimone</groupId>
                            <artifactId>webapp-runner</artifactId>
                            <version>8.5.11.3</version>
                            <destFilename>webapp-runner.jar</destFilename>
                        </artifactItem>
                    </artifactItems>
                </configuration>
            </execution>
        </EXECUTIONS>
    </plugin>
</plugins>

我让它在当地工作.
然后我添加了以下内容procfile

web:    java $JAVA_OPTS -jar myapp-ws/target/dependency/webapp-runner.jar --port $PORT myapp-ws/target/*.war

并致力于GITHUB(我有与Heroku集成的git),从Heroku内部触发构建并且它有效.

@H_502_23@
本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。

大佬总结

以上是大佬教程为你收集整理的angular – Websocket在localhost上工作但不是Heroku全部内容,希望文章能够帮你解决angular – Websocket在localhost上工作但不是Heroku所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。