websocket建立连接时能传递参数吗

 我来答
电影大师兄
2017-03-23
知道答主
回答量:14
采纳率:0%
帮助的人:11.5万
展开全部

可以传参,以java为例

html中:

var websocket = new WebSocket("ws://ws.xxxx.con/what/webSocketServer?sid=" + sid)

java中自定义 WebSocketHandshakeInterceptor, 在 beforeHandshake 方法中使用

String sid = ((ServletServerHttpRequest) req).getServletRequest().getParameter("sid");

即可拿到 sid 的值,可以添加到 attributes 中使用


WebSocketHandler  的方法中,通过 

session.getAttributes().get('sid')

可以拿到建立时传递的参数

大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
小刺客拿AK
2017-07-19 · TA获得超过399个赞
知道答主
回答量:36
采纳率:100%
帮助的人:6.9万
展开全部

您可以这样!

在js传参的时候参数就和其他地址一样传就行  比如

var wsUrl = 'ws://localhost:8080/ScadaWebSocket/ScadaSocket/我的参数'
webSocket=new WebSocket(wsUrl);


后台的类上面的注解这样写

@ServerEndpoint(value = "/ScadaSocket/{param}")

注意上面的花括号了吗?  那个其实就是你传过来的参数

里面的四个方法如果想要参数直接在方法里加参数就行 但是得有一个注解 而且注解里面的字符串得和上面的参数名一样


public void onOpen(@PathParam(value="param") String param,Session session, EndpointConfig config) {
System.out.println("我的参数是:"+param);
}


这是路径参数,也就是前端将参数当做路径传了过来,后台直接取的,有一个缺点就是比较特殊的字符无法传过来  比如{}  和[]等   如果你的参数真的很特殊解决方法是: 前端将参数加密或者转换为二进制传过来  后台再转回来就行了!    这是我研究半天的结果!


onMessage和onClose等等都可以加参数的

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DoramiHe
2017-04-12 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59541
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
function showNews(n) {
var form = document.getElementById("news");
form.action = "showDetail!getMenuNames.action?DetailID=" + n;
form.submit();
}
<form id="news" method="post">
<input type="button" value="提交" onclick="showNews(n)">
</form>
带参数调整
或直接
<a href="showDetail!getMenuNames.action?参数名=参数值">
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
霞左丞永
2016-10-16 · 超过31用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:32.8万
展开全部
function showNews(n) {
var form = document.getElementById("news");
form.action = "showDetail!getMenuNames.action?DetailID=" + n;
form.submit();
}
<form id="news" method="post">
<input type="button" value="提交" onclick="showNews(n)">
</form>
带参数调整
或直接
<a href="showDetail!getMenuNames.action?参数名=参数值">
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式