千家信息网

websocket建立连接时传递参数的方法

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,本篇内容介绍了"websocket建立连接时传递参数的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2025年01月31日websocket建立连接时传递参数的方法

本篇内容介绍了"websocket建立连接时传递参数的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

后台获取参数4中方法:

websocket的url

"ws:localhost:82/chat/123?username=ydh";

socket的注释

@ServerEndpoint("/chat/{param}")

socket的open方法

@OnOpenpublic void open(Session session, @PathParam("param")String  param) {    System.out.println("用户"+param+" 登录");    Map map = session.getPathParameters();    System.out.println("session.getPathParameters()"+map.toString());    String str = session.getQueryString();    System.out.println("session.getQueryString()"+str);    String uri = session.getRequestURI().toString();    System.out.println("session.getRequestURI().toString()"+uri);}

结果

用户123 登录session.getPathParameters(){param=123}session.getQueryString()username=baidusession.getRequestURI().toString()/chat/123?username=baidu

1、url站位,通过@PathParam注释获取
2、url站位,通过session.getPathParameters()获取
3、url传参,通过session.getQueryString()
4、url传参,通过session.getRequestURI().toString()

从结果可以看出1、2两个方法不需要截取,可以直接使用;而3、4两个方法都需要截取字符串,稍微麻烦,但是请求的url比较清爽。


下面的是完整代码

config代码

import javax.websocket.Endpoint; import javax.websocket.server.ServerApplicationConfig; import javax.websocket.server.ServerEndpointConfig; import java.util.Set; public class ChatConfig implements ServerApplicationConfig { // 注解 @Override public Set> getAnnotatedEndpointClasses(Set> scanned) { System.out.println("websocket......启动!"+scanned.size()); return scanned; } // 接口 @Override public Set getEndpointConfigs(Set> scanned) { return null; } }

socket代码

import javax.websocket.OnClose;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.PathParam;import javax.websocket.server.ServerEndpoint;import java.io.IOException;import java.util.Map;/** * @description: * @author: yangdehong * @version: 2017/6/4. */@ServerEndpoint("/chat/{param}")public class ChatSocket {    @OnOpen    public void open(Session session, @PathParam("param")String  param) {        System.out.println("用户"+param+" 登录");        Map map = session.getPathParameters();        System.out.println("session.getPathParameters()"+map.toString());        String str = session.getQueryString();        System.out.println("session.getQueryString()"+str);        String uri = session.getRequestURI().toString();        System.out.println("session.getRequestURI().toString()"+uri);    }    @OnClose    public void close(Session session){        System.out.println("sessionId:"+session.getId()+"关闭");    }    @OnMessage    public void message(Session session, String message, boolean last) throws IOException {        System.out.println("sessionId:"+session.getId()+"-------"+message+"------"+last);        session.getBasicRemote().sendText("接受成功");    }}

模拟登录servlert

import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/** * @description: * @author: yangdehong * @version: 2017/6/3. */@WebServlet("/LoginServlet")public class LoginServlet extends HttpServlet {    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String username = request.getParameter("username");        request.getSession().setAttribute("username", username);        response.sendRedirect("chat.jsp");    }}

chat.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    Title        

index.html

        登录
name:

web.xml

  websocket      index.html  

maven

    javax.websocket    javax.websocket-api    1.1    org.apache.tomcat    tomcat-websocket    8.0.26

"websocket建立连接时传递参数的方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0