Tag: websocket

SpringMVC Websockets使用Spring Security进行消息传递用户身份validation

我已经看到了关于这个问题的几个主题,但它们似乎都没有直接回答这个问题。 背景,我在应用程序的其他部分安装了弹簧安全,工作和运行。 我的用户名是“开发者”。 在Java 7,Glassfish 4,Spring 4上运行,并使用Angular + StompJS 我们在这里得到一些代码: package com.myapp.config; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.simp.config.MessageBrokerRegistry; import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer; import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; import org.springframework.web.socket.config.annotation.StompEndpointRegistry; @Configuration @EnableWebSocketMessageBroker public class WebSocketBrokerConfig extends AbstractWebSocketMessageBrokerConfigurer { public final static String userDestinationPrefix = “/user/”; @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint(“/stomp”).withSockJS().setSessionCookieNeeded(true); } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.setApplicationDestinationPrefixes(“/app”); //registry.enableStompBrokerRelay(“/topic,/user”); registry.enableSimpleBroker(“/topic”, “/user”); […]

Spring root应用程序上下文和servlet上下文混淆

我知道我需要在我的servlet上下文中注册带注释的@Controller类,以使我的webapp可访问。 通常,我按以下方式做: @Configuration @EnableWebMvc @ComponentScan({“foo.bar.controller”}) public class WebConfig extends WebMvcConfigurerAdapter { //other stuff like ViewResolvers, MessageResolvers, MessageConverters, etc. } 我添加到根应用程序上下文中的所有其他配置类。 以下是我的dispetcher初始化程序通常如下所示: public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class[] getRootConfigClasses() { return new Class[] { RootConfig.class, ServiceConfig.class }; } @Override protected Class[] getServletConfigClasses() { return new Class[] { WebConfig.class }; } @Override protected String[] […]

服务器端WebSockets的最佳Java框架

我想创建低负载的简单服务器。 目标是让一些javascript客户端访问通过WebSockets在Java中实现的一些function。 我寻求最好的库用于它 – 它应该是简单的,健壮的等等。现在我考虑3个替代品 – jWebSocket – jetty – netty什么是最好的? 或者可能是别的什么? 提前致谢

如何测试使用JavaScript开发的WebSocket

我创建了WebSocket.js,但遗憾的是由于数据不可用,我无法测试它。 要求是来自各种来源的数据,所以我有多个sockets。 注意:我想特别测试我的socket.onMessage表现为不同的套接字。 请在下面找到代码段: var webSocket; var txQueue = []; var defaultReconnectTimeout = 1000; //will be multiplied by 2 and saved into reconnectTimeout on each try var reconnectTimeout = defaultReconnectTimeout; var registerWebSocketHandlers = function(webSocket) { webSocket.onclose = function(){ setTimeout(service.reopen, reconnectTimeout *= 2); }; webSocket.onopen = function(e) { reconnectTimeout = defaultReconnectTimeout; //reset this deferredSend(); }; webSocket.onerror […]

使用来自websocket消息的spring-security和access principal保护Spring-Webscoket

Spring Security是一个非常好的框架,广泛用于身份validation和授权。 我要求使用j_spring_security_check对应用程序进行身份validation,并且只有授权用户才能向websocket处理程序发出请求。 我根据http://malalanayake.wordpress.com/2014/06/27/spring-security-on-rest-api/配置了弹簧安全性 我根据http://syntx.io/using-websockets-in-java-using-spring-4/配置了websocket。 我希望从handleTextMessage处理程序访问MyPrincipal主体对象,如下所示: @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { System.out.println(“Protocol: “+session.getAcceptedProtocol()); TextMessage returnMessage = new TextMessage(message.getPayload() + ” received at server”); System.out.println(“myAttrib=” + session.getAttributes().get(“myAttrib”)); MyPrincipal user = (MyPrincipal) ((Authentication) session .getPrincipal()).getPrincipal(); System.out.println(“User: ” + user.getUserId()); session.sendMessage(returnMessage); } 请尽快重播。

访问WebSocket @ServerEndpoint中的HttpServletRequest属性

我需要访问HttpServletRequest属性来获取javax.servlet.request.X509Certificate ,其中包含TLS请求的X509Certificate证书数组。 从JAX-RS ContainerRequestFilter我可以轻松地从ContainerRequestContext.getProperty(String property)方法中提取它,但是我找不到从WebSocket Session获取它的方法,也没有找到HandshakeRequest ,我可以从中访问HttpSession实例但是不是HttpServletRequest之一。 注意:这不是在Web Socket @ServerEndpoint中从HttpServletRequest访问HttpSession的重复,因为我需要访问HttpServletRequest (或等效于提取TLS证书),而不是HttpSession 。 由于WebSocket是HTTP的超集,我想它应该是可能的,并希望Java团队想到了一种访问servlet属性的方法,但我真的找不到。 任何人都知道这是否可行?

Android Eclipse中的Node.js和Websocket

感谢您查看我的问题。 我是android开发的初学者,目前我正在尝试使用socket和node js制作聊天应用程序。 我使用了来自github的库,即https://github.com/Gottox/socket.io-java-client,并且能够向我的服务器发送消息,并且我能够在“new_client_message”下收到回复消息。在下面的logcat图片中。 我面临的问题是,我无法弄清楚从服务器获取消息以在列表视图中显示它的方法。 如果有人能帮助我,那将是很棒的。 提前致谢 我的LogCat: Node.js代码: var socket = require(‘socket.io’); var express = require(‘express’); var http = require(‘http’); var app = express(); var server = http.createServer(app); var io = socket.listen(server); var users = {}; var clients = {}; io.sockets.on( ‘connection’, function(socket) { console.log(“New client !”); var socket_id = socket.id; var hs = […]

将JSR-356 WebSocket @ServerEndpoint与Spring 3 bean集成

我使用Spring 3.2.5而没有全新的JSR-356 WebSockets支持。 我想在我的@ServerEndpoint WebSocket服务器中使用singleton-bean引用,该服务器由servlet容器本身实例化,而不是在Spring上下文中实例化。 干净的方法是什么? 我目前的解决方案:我在静态字段中使用实例制作了@Service单例bean: @Service public class WebSocketSupportBean { private volatile static WebSocketSupportBean instance = null; public static WebSocketSupportBean getInstance() { return instance; } public WebSocketSupportBean() { instance = this; } 并且只是通过静态方法在@ServerEndpoint获取它,如果返回null则断开用户连接(如果在服务器启动期间bean没有创建,但是用户连接):

为什么要使用websocket,使用它有什么好处?

我试过阅读一些文章,但在这个主题上并不那么清楚。 有人想在下面解释我的观点: 为什么在http上使用websocket 什么是全双工通信 低延迟交互是什么意思? 任何forms的帮助表示赞赏。

@ServerEndpoint和@Autowired

如何将字段自动装入@ServerEndpoint。 以下不起作用。 @Component @ServerEndpoint(“/ws”) public class MyWebSocket { @Autowired private ObjectMapper objectMapper; } 但是,如果我删除@ServerEndpoint ,它可以正常工作。 我使用的是Spring 3.2.1和Java 7