精华内容
下载资源
问答
  • websocket访问ServletAPI

    千次阅读 2014-08-25 09:58:30
    websocket实用注解的方式来完成服务端配置,使用的协议也是WebSocket,这和之前的基于Ajax方式的轮询和长连接方式都不相同,所以访问ServletAPI方式也有所不同,那我们怎么才能让websocket访问到ServletAPI呢?...

    对于一个java web程序来说或多或少都要使用ServletAPI,websocket也不会例外。但是

    websocket实用注解的方式来完成服务端配置,使用的协议也是WebSocket,这和之前的基于Ajax方式的轮询和长连接方式都不相同,所以访问ServletAPI方式也有所不同,那我们怎么才能让websocket访问到ServletAPI呢?

    WebSocket有一个Configurator(该类的完整路劲javax.websocket.server.ServerEndpointConfig.Configurator)类,我们可以通过继承这个类,重写其中的方法(modifyHandshake),然后通过注解的方式配置,达到我们访问ServletAPI的目的。下面我以websocket获取HttpSession为例演示,具体代码如下:

    继承Configurator类

             publicclass MyConfiguratorextendsConfigurator {

     

            @Override

            publicvoid modifyHandshake(ServerEndpointConfig sec,

                    HandshakeRequest request,HandshakeResponse response) {

                        //获取HttpSession

                        HttpSession httpSession =(HttpSession)request.getHttpSession();

                        //保存HttpSessionUserProperties

                        sec.getUserProperties().put("httpSession", httpSession);

            }

       

    }

     

    配置websocket类,并在该类中获取已经存放的httpSession

    @ServerEndpoint(value="server",configurator=MyConfigurator.class)

    publicclass Server {

        @OnOpen

        publicvoid start(Session session){

            //注意两种Session的区别,参数中Sessionwebsocketsession,用这个//session可以获取UserProperties,再通过该对象获取已经存入其中的HttpSession对象

            HttpSession httpSession =(HttpSession)session.getUserProperties().get("httpSession");

            //然后至于你怎么使用该httpSession对象那就要看你的目的了。

        }

    }

     

    展开全文
  • spring的websocket访问时403

    千次阅读 2016-12-05 21:25:25
    spring的websocket访问时403注:仅支持关闭sockjs的情况,如果需要开启sockjs,那么以下内容就不用看了 先说解决方案,在配置websocket的xml语句块中:<websocket:handlers allowed-origins="*"> </websocket:...

    spring的websocket访问时403

    注:仅支持关闭sockjs的情况,如果需要开启sockjs,那么以下内容就不用看了
    先说解决方案,在配置websocket的xml语句块中:

    <websocket:handlers allowed-origins="*">
    </websocket:handlers>

    添加allowed-origins属性,具体值看自己的需要,如有多个用 “,”隔开。

    原因:下面是spring在初始化websocket的相关代码

    class HandlersBeanDefinitionParser implements BeanDefinitionParser {
    
        private static final String SOCK_JS_SCHEDULER_NAME = "SockJsScheduler";
    
        private static final int DEFAULT_MAPPING_ORDER = 1;
    
    
        @Override
        public BeanDefinition parse(Element element, ParserContext context) {
            Object source = context.extractSource(element);
            CompositeComponentDefinition compDefinition = new CompositeComponentDefinition(element.getTagName(), source);
            context.pushContainingComponent(compDefinition);
    
            String orderAttribute = element.getAttribute("order");
            int order = orderAttribute.isEmpty() ? DEFAULT_MAPPING_ORDER : Integer.valueOf(orderAttribute);
    
            RootBeanDefinition handlerMappingDef = new RootBeanDefinition(WebSocketHandlerMapping.class);
            handlerMappingDef.setSource(source);
            handlerMappingDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
            handlerMappingDef.getPropertyValues().add("order", order);
            String handlerMappingName = context.getReaderContext().registerWithGeneratedName(handlerMappingDef);
    
            RuntimeBeanReference sockJsService = WebSocketNamespaceUtils.registerSockJsService(
                    element, SOCK_JS_SCHEDULER_NAME, context, source);
    
            HandlerMappingStrategy strategy;
            // 以下为主要代码
            if (sockJsService != null) {
                strategy = new SockJsHandlerMappingStrategy(sockJsService);
            }
            else {
                RuntimeBeanReference handshakeHandler = WebSocketNamespaceUtils.registerHandshakeHandler(element, context, source);
                Element interceptorsElement = DomUtils.getChildElementByTagName(element, "handshake-interceptors");
                ManagedList<? super Object> interceptors = WebSocketNamespaceUtils.parseBeanSubElements(interceptorsElement, context);
                String allowedOriginsAttribute = element.getAttribute("allowed-origins");
                List<String> allowedOrigins = Arrays.asList(StringUtils.tokenizeToStringArray(allowedOriginsAttribute, ","));
                interceptors.add(new OriginHandshakeInterceptor(allowedOrigins));
                strategy = new WebSocketHandlerMappingStrategy(handshakeHandler, interceptors);
            }
    
            ManagedMap<String, Object> urlMap = new ManagedMap<String, Object>();
            urlMap.setSource(source);
            for (Element mappingElement : DomUtils.getChildElementsByTagName(element, "mapping")) {
                strategy.addMapping(mappingElement, urlMap, context);
            }
            handlerMappingDef.getPropertyValues().add("urlMap", urlMap);
    
            context.registerComponent(new BeanComponentDefinition(handlerMappingDef, handlerMappingName));
            context.popAndRegisterContainingComponent();
            return null;
        }
        // 其他代码已省略
    
    }

    应该可以看到,如果开启sockjs则不会执行else代码块中代码,那么为了执行else代码块就必须关闭sockjs。所以该方式仅支持关闭sockjs。
    在 websocket:handlers 标签添加 allowed-origins属性以后,会在生成默认拦截器时,将allowed-origins的值注入,这样就可以解决访问时出现403的错误。

    注:也可以通过写配置类的方式,不过其他人都写得很详细了,在这里就不在多说。更加详细的说明请见springmvc官方文档,上面写得很清楚,这里贴出来仅仅是因为自己还不是很熟悉,官方文档写道很清楚的。

    展开全文
  • webcoket 做聊天 && websocket 访问HttpSession

    http://blog.csdn.net/z719725611/article/details/52400404

    写的很好


    展开全文
  • Jitsi设置websocket访问

    2020-08-12 18:41:54
    也可以使用websocket进行和服务器的绑定 jitsi-meet下的config.js设置如下 ar config = { hosts: { domain: 'meet.example.loc', focus: 'focus.meet.example.loc', muc: 'conference.meet.example.loc' }, /...

    Jitsi默认使用XMPP协议的BOSH和http进行绑定
    也可以使用websocket进行和服务器的绑定
    jitsi-meet下的config.js设置如下

    ar config = {
        hosts: {
            domain: 'meet.example.loc',
            focus: 'focus.meet.example.loc',
            muc: 'conference.meet.example.loc'
        },
    
        // BOSH URL. FIXME: use XEP-0156 to discover it.
        bosh: '//meet.example.loc/http-bind',
        // Websocket URL
        websocket: 'wss://meet.example.loc/xmpp-websocket',
    

    2.prosody配置文件上启用websocket

    modules_ enabled = {
    
    "websocket";
    
    "smacks";
    
    }
    

    全局设置

    consider_ websocket_ secure = true;
    
    cross_ domain_ websocket = true;
    
    think_ websocket_ secure = true;
    
    smacks_ max_ unacked_ stanzas = 5;
    
    smacks_ hibernation_ time = 60;
    
    smacks_ max_ hibernated_ sessions = 1;
    
    smacks_ max_ old_ sessions = 1;
    
    component_ interfaces = { "0.0.0.0" };
    
    

    3.nginx设置

    location = /xmpp-websocket {
    
    proxy_ pass http://127.0.0.1 :5280/xmpp-websocket?prefix=$prefix&$args;
    
    proxy_ http_ version 1.1;
    
    proxy_ set_ header Upgrade $http_ upgrade;
    
    proxy_ set_ header Connection "upgrade";
    
    proxy_ set_ header Host $http_ host;
    
    tcp_ nodelay on;
    
    }
    
    展开全文
  • mqtt服务器搭建成功,微信端可以通过websocket访问,计算机可以访问,安卓可以访问,stm32嵌入式可以访问,一个完整的物联网系统!
  • websocket 访问支持IE11

    千次阅读 2019-04-11 11:07:39
    修改ws://localhost:81为ws://127.0.0.1:81即可,亲测有效。
  • 所以本人就了解了以下,服务器向客户端发送数据的技术:websocket 2.websocket的使用 由于本人初次接触,所以有些东西都是直接来copy,还查找了一些其他的博客! 下面是参照的博客的地址: 简书中的springboo...
  • 我重写的![图片说明](https://img-ask.csdn.net/upload/201711/15/1510746548_122327.png)没有使用serverEndpoint标签
  • Websocket跨域访问

    千次阅读 2020-04-07 01:50:52
    WebSocket 是 HTML5 开始提供的⼀种在单个 TCP 连接上进⾏全双⼯通讯的协议,可以实现跨域访问websocket安装命令 npm i ws -S 服务器端: let WebServerSocket = require("ws").Server; let wss = new ...
  • webSocket配置wss访问

    2018-12-10 21:03:27
    Springboot2.1配置ssl实现https访问,集成WebSocket,实现ws和wss访问
  • Spring Websocket 跨域访问

    千次阅读 2018-06-14 16:50:19
    官方文档springwebsocket 4.1.5版本前默认支持跨域访问,之后的版本默认不支持跨域,需要设置: .setAllowedOrigins(&quot;*&quot;) &amp;lt;websocket:handlers allowed-orgins=&quot;*&...
  • 使用 websocket 连接访问快速路由。 安装 npm install psi-4ward/express-websocket 服务器 // Init express var app = require ( 'express' ) ( ) ; app . get ( '/hello' , function ( req , res ) { // ...
  • 主要介绍了Spring集成webSocket页面访问404问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • SpringWebSocket Demo

    2017-03-25 12:47:57
    基于解决基于Spring集成webSocket访问 404的问题
  • 如题,在web.xml中配置欢迎页面为websocket服务访问地址,无法直接通过访问项目根路径来访问websocket服务(访问路径为:ws://127.0.0.1:8080/项目名/),而访问路径后面加websocket服务url是可以访问的。...
  • webSocket

    2019-12-12 15:25:47
    webSocket 1_首先创建动态Web项目 2_导入jar 3_创建BitCoinServer类 package com.kemeng.bitcoin; import java.io.IOException; import javax.websocket.OnClose; import javax.websocket.OnError; import ...
  • WebSocket

    2020-02-17 17:44:15
    WebSocket协议中,客户端浏览器和服务器只需要完成一次握手就可以创建持久性的连接,并在浏览器和服务器之间进行双向的数据传输——全双工通讯。 HTTP和WebSocket连接生命周期对比图: WebSocket协议是通过HTTP...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,764
精华内容 17,905
关键字:

websocket访问