Tag: websocket

如何从正常请求调用中调用@SendTo,即@RequestMapping

我已经使用Spring MVC实现了Web Socket,它对我来说很好用,即从一个浏览器到另一个浏览器工作,这个浏览器是使用这个代码打开的。 @MessageMapping(“/hello”) @SendTo(“/topic/greetings”) public HelloMessage greeting(HelloMessage message) throws Exception { Thread.sleep(3000); // simulated delay return message; } 任何人都可以帮助我从正常的api控制器调用@SendTo(“/ topic / greetings”)。我尝试使用它但它对我不起作用 @RequestMapping(value = “/sendMessage”) @SendTo(“/topic/greetings”) public HelloMessage sendMessage() throws Exception { return new HelloMessage((int) Math.random(), “This is Send From Server”); } 对此有何看法? 谢谢

Spring 4中的websockets的动态消息映射

我想用spring新的websocket / stomp支持开发一个小聊天。 我想我不能用这样的东西: @MessageMapping(“/connect/{roomId}”) @SendTo(“/topic/newMessage”) public String connectToChatRoom(@PathVariable String roomId, Principal p) { return getTimestamp() + ” ” + p.getName() + ” connected to the room.”; } 这里有什么动态映射选项? 作为客户,我只想订阅我所在的房间。 提前致谢!

使用Spring 4 WebSocket从Java推送消息

我想将消息从Java推送到WebSocket客户端。 我已成功将js客户端发送到服务器并在2个js客户端上收到消息,因此客户端代码工作正常。 我的问题是,我想在Java应用程序中发生事件时发起发送。 因此,例如,每次放置10个订单时,向所有订阅的客户端发送消息。 这可能吗? 我当前的配置: @Controller public class MessageController { @MessageMapping(“/hello”) @SendTo(“/topic/greetings”) public Greeting greeting() throws Exception { return new Greeting(“Hello world”); } } 我希望能做的是这样的: public class OrderManager { @Autowired MessageController messageController; int orderCount = 0; public void processOrder(Order o) { orderCount++; if(orderCount % 10 == 0) messageController.greeting(); } } 所有订阅的websocket客户端都会收到一条消息。

Spring Boot应用程序中的Websocket – 获取403禁止

Spring Boot应用程序中的Websocket – 获取403禁止 当我在eclipse(没有弹簧启动)中运行时,我可以使用sockjs / stompjs从客户端连接到websocket。 但是当我为websocket代码创建一个Spring启动jar(gradlew build)并运行java -jar websocket-code.jar时,我得到一个连接到websocket的403错误。 我没有websockets的身份validation。 我有一个CORSfilter,并认为请求/响应中的所有标题正确。 下面是我的build.gradle apply plugin: ‘java’ apply plugin: ‘spring-boot’ apply plugin: ‘war’ sourceCompatibility = 1.7 version = ‘1.0’ repositories { mavenCentral() } buildscript { repositories { mavenCentral() } dependencies { classpath(“org.springframework.boot:spring-boot-gradle-plugin:1.2.5.RELEASE”) } } configurations { compile.exclude module: “spring-boot-starter-tomcat” } dependencies { compile “org.springframework:spring-web:$spring_version” compile […]

Java中的独立Socket.IO服务器

我正在寻找一个用Java编写的简单Socket.IO服务器。 我熟悉这个 ,但它依赖于servlet,我在我的应用程序中没有使用它。 我正在寻找类似的东西,但支持所有的Socket.IO协议,而不仅仅是WebSocket部分。 编辑 :这也意味着没有Jetty等。

如何获取现有的websocket实例

我正在开发一个使用Websockets(Java EE 7)的应用程序,以异步方式向所有连接的客户端发送消息。 每当创建新文章(我的应用程序中的参与模式)时,服务器(Websocket端点)都应发送这些消息。 每次建立与websocket端点的连接时,我都会将相应的会话添加到列表中,我可以在外部访问该列表。 但我遇到的问题是,当我访问这个创建的websocket端点时,所有客户端都从外部连接(任何其他业务类),我得到了现有的实例(如单例)。 所以,你能否告诉我一个方法,我可以得到一个websocket端点的现有实例,因为我无法创建它作为新的MyWebsocketEndPoint()因为它将由websocket内部机制创建,只要客户端的请求是接收。 对于参考: private static WebSocketEndPoint INSTANCE = null; public static WebSocketEndPoint getInstance() { if(INSTANCE == null) { // Instead of creating a new instance, I need an existing one INSTANCE = new WebSocketEndPoint (); } return INSTANCE; } 提前致谢。

无法连接到我的tomcat 8 websocket

我编写了一个连接到服务器上的websocket的客户端程序。 我使用示例工作设置tomcat8并使用我的客户端程序命中EchoAnnotation端点。 我写了这个端点程序如下: @ServerEndpoint(value = “/websocket”) public class PortServer implements AirMessageListener { public PortServer() { } @OnOpen public void start(Session session) { //do stuff } @OnClose public void end() { //do stuff } } @OnMessage public void incoming(String message) { //do stuff } @OnError public void onError(Throwable tw) throws Throwable { //do stuff } 我编译它并创建一个名为portserver的war文件,并将其放入我的tomcat […]

@serverendpoint路径在哪里映射(Websockets)

对于我使用spring框架的websocket,我有以下@serverendpoint路径: @ServerEndpoint(value=”/serverendpoint”, configurator = SpringConfigurator.class) 我的第一个问题是说我有一个urlwww.example.com 。 具有路径serverendpoint的serverendpoint在哪里被映射? 我可以在wss://example.com:$PORT/currentpage.html/serverendpoint访问我的serverendpoint wss://example.com:$PORT/currentpage.html/serverendpoint ? 或者这是错误的方式。 我有一台Wildfly 10服务器在运行。 基于另一个SO问题 ,我被告知要使用以下Uri: var wsUri = “wss://” + document.location.hostname + “:8443” + document.location.pathname + “/../serverendpoint”; 。 但是,当我这样做时,在谷歌浏览器中,我收到以下错误: WebSocket is already in CLOSING or CLOSED state. 我的console.log打印出websocket已连接,但后来我立即得到了上述错误。 我究竟做错了什么? 根据Wildfly服务器日志,我知道serverendpoint被映射: [io.undertow.websockets.jsr] (ServerService Thread Pool — 78) UT026003: Adding annotated server endpoint class com.voice2.spring.web.controller.serverendpoint for […]

Jetty Websocket IdleTimeout

我最近一直在使用Jetty API (9.4.5 release)带注释的websockets,并与之聊天。 但是我遇到了一个问题,5分钟后(我认为是默认计时器),会话关闭(这不是由于错误)。 我发现的唯一解决方案是通知我的socket关闭事件并在新套接字中重新打开连接。 但是我已经阅读了stackOverflow,通过在WebsocketPolicy中设置IdleTimeOut ,我可以避免这个问题: 我试过设置为3600000 ,但行为根本没有改变 我也尝试将其设置为-1但我得到以下错误: IdleTimeout [-1] must be a greater than or equal to 0 private ServletContextHandler setupWebsocketContext() { ServletContextHandler websocketContext = new AmosContextHandler(ServletContextHandler.SESSIONS | ServletContextHandler.SECURITY); WebSocketHandler socketCreator = new WebSocketHandler(){ @Override public void configure(WebSocketServletFactory factory){ factory.getPolicy().setIdleTimeout(-1); factory.getPolicy().setMaxTextMessageBufferSize(MAX_MESSAGE_SIZE); factory.getPolicy().setMaxBinaryMessageBufferSize(MAX_MESSAGE_SIZE); factory.getPolicy().setMaxTextMessageSize(MAX_MESSAGE_SIZE); factory.getPolicy().setMaxBinaryMessageSize(MAX_MESSAGE_SIZE); factory.setCreator(new UpgradedSocketCreator()); } }; ServletHolder sh = […]

Android中的Websockets和cookie

我正在开发一个Android应用程序,我需要一个Websockets框架,允许我在Websocket的第一个连接中发送cookie(而不是在每个消息中)。 我已经尝试过Autobahn和Java-WebSocket,但是他们没有发送我的cookie而且他们没有cookie支持。 我能做什么? 我不认为WebView是我的应用程序的一个很好的解决方案,因为我需要在后台的服务总是向Websocket发送一些消息。 先感谢您!