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

作者&投稿:营凌 (若有异议请与网页底部的电邮联系)
websocket建立连接时能传递参数吗~

直接往客户端的输出流里写入就可以了,只不过写入特殊值,这里的特殊值指的是客户端和服务器端约定的一种参数形式。服务器端解析这种信息,就可以了。如果服务器端为每个客户端都开了一个处理线程,那么可以先写入一个头标记,然后传参数,然后写入结束标记,然后开始写入正式内容。

function showNews(n) {
var form = document.getElementById("news");
form.action = "showDetail!getMenuNames.action?DetailID=" + n;
form.submit();
}



带参数调整
或直接

可以传参,以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')

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



您可以这样!

在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等等都可以加参数的



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?参数名=参数值">

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?参数名=参数值">


cpu的问题
cpu的发展史 btboy7501 []2006-05-13 223020 [] cpu是central processing unit(中央微处理器)的缩写,它是计算机中最重要的一个部分,由运算器和控制器组成。如果把计算机比作人,那么cpu就是人的大脑。cpu的发展非常迅速,个人电脑从8088(xt)发展到现在的pentium 4时代,只经过了不到二十年的时间。

太和区19466245627: websocket建立连接时能传递参数吗? -
嬴珠明可: 可以传参.以java为例:html中:var websocket = new WebSocket("ws://ws.xxxx.con/what/webSocketServer?sid=" + sidjava中自定义 WebSocketHandshakeInterceptor, 在 beforeHandshake 方法中 String sid = ((ServletServerHttpRequest) req...

太和区19466245627: 如何通过WebSocket连接服务器进行数据传输 -
嬴珠明可: WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术.在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道.两者之间就直接可以数据互相传送. ...

太和区19466245627: 如何使用WebSocket -
嬴珠明可: WebSocket 协议本质上是一个基于 TCP 的协议.为了建立一个 WebSocket 连接,客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了一些附加头信息,其中附加头信息”Upgrade: WebSocket”表明...

太和区19466245627: 请问websocket该如何建立与连接 -
嬴珠明可: 在连接之前需要知道一下几点:1、了解websocket的协议和请求规范;2、使用PHP的socket函数库来处理websocket的请求;3、处理websocket的数据帧.下面是我写的一个小例子,里面的注释我觉得也挺详细的了,对帧的处理我没有完善,...

太和区19466245627: HTTP 和 WebSocket的区别 -
嬴珠明可: 按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP是应用层的协议.在这三者之间,SPDY和WebSocket都是与HTTP相关的协议,而TCP是HTTP底层的协议.WebSocket则提供使用一个TCP连接进行双向通讯的机制,包括...

太和区19466245627: html5 websocket能传送多少字节 -
嬴珠明可: var websock;var req_seq;if (!websock || websock.readyState === undefined || websock.readyState > 1) { /** * websocket的连个属性:readyState和bufferedAmount. * *根据readyState属性可以判断webSocket的连接状态,该属性的值可以是下面...

太和区19466245627: websocket都可以传输什么?只有简单的数据类型?js对象能通过websocket传输吗? -
嬴珠明可: 什么都可以传,传的是二进制字节,你取到后自己组装一下就行

太和区19466245627: 网页打印时提示websocket没有准备好 -
嬴珠明可: ”WebSocket没准备好,点确定继续“,在程序管理里把C-Lodop(32-bit)和或C-Lodop(64-bit)全卸载掉,到lodop官网下载“云打印C-Lodop扩展版(CLodop3.093Extend)”,重新安装后,刷新页面或关闭浏览器重新打开,一般都能解决.2020.1.5解决了一个此类问题!特回复以志纪念.

太和区19466245627: HTML5 WebSocket如何实现消息推送? -
嬴珠明可: HTML5中WebSocket实现消息推送的方法: 1、创建服务器连接: var socket = new WebSockect('ws://localhost:8080'); 2、增加监控事件,当触发open方法时,建立连接准备发送消息. socket.addEventListener('open', function(){console.log("...

太和区19466245627: android 怎么与websocket 通讯 -
嬴珠明可: Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post两种方式.至于Socket通信会在以后的博文中介绍. HTTP协议简介: HTTP (Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网