JKAS WEBSOCKET

说明:如果开启了websocket,每次更新站点,需要重新启动容器(tomcat,resin......),原因是已经开启端口的线程没有同时重启,端口占用异常,实例化不到对象

 

配置:

[WEBSOCKET]

#是否开启websocket 0为不开启,1为开启

ws_enable=1

#websocket端口,注意不要与其它已经使用端口冲突,端口可以通过nginx等反向从80端口代理过来
ws_port=8888

#websocket调用包名设置

ws_package=test.z.websocket


 信息推送:每次不能大于1024字节

wsend(String messages)//推送到当前连接用户

wsend(byte[] messages)

wsend(String to,String messages)//通过websocket推送信息到指定用户 usertag:用户标识,前端登录时指定,多个用逗号隔开,messages:信息内容,注:仅可在定时任务、过滤器、监听器及控制器中使用

wsend(String to,byte[] messages)

前端请求发送数据格式:

{"cmd":"close"}//关闭

{"cmd":"login","uid":"zhou886"}//登录

{"app":"test","data":{"name":"sfsd"}}//其它请求,app指自己写的继承于Websocket的类,act:该类的方法,没传act默认为index

 

websocket类编写:

websocket类必须继承于Websocket,方法类型不限定,但最终会以字符串输出到客户端

获取前端参数,即data数据方法:

String D()//获取整 个data数据

String D(String key)//获取json结构的data数据指定key的值

案例:

package test.z.websocket;
import org.jkas.core.Websocket;
public class Test extends Websocket
{  public String index()
 {return D("name");
 }
}

 

服务端输出:

{"code":200,"msg":"connected"}//连接成功
{"code":200,"msg":"login"}//登录成功
{"code":200,"msg":"closed"}//关闭连接成功
{"code":404,"msg":"Bad Request"}//app或act名称不符要求
{"code":200,"msg":"success"}//收到非Json信息,不做任何处理

{"code":404,"msg":"Please set the package in the configuration file first."}//包名没配置输出

{"code":404,"msg":"notice messages"}//各种提示信息

{"code":500,"msg":"invalid json data"}//请求的JSON数据格式错误

如果是自定义类,字符串原样输出


 

 

客户端:

<html>

<head>

</head>

<body>

<div id="valueLabel">ddddd</div>

<input id="speak" />

<input type="button" onclick="say()" value="send"/>

<input type="button" onclick="closews()" value="Close" style="display:none;" id="closebtn"/>

<input type="button" onclick="connws()" value="Connection" id="connbtn" style="display:inline"/>

<input type="button" onclick="loginws()" value="Login" id="loginbtn" style="display:inline"/>

<script type="text/javascript">

var socket;

var speak=document.getElementById("speak");

var valueLabel = document.getElementById("valueLabel");


function connws() {

valueLabel.innerHTML = "";

document.getElementById("closebtn").style.display="inline";

document.getElementById("connbtn").style.display="none";

var ws = new WebSocket("ws://127.0.0.1:9999");



ws.onmessage = function(evt) {


valueLabel.innerHTML = valueLabel.innerHTML + " " + evt.data;


};


 


ws.onclose = function(evt) {


valueLabel.innerHTML = "onClose";

document.getElementById("connbtn").style.display="inline";

document.getElementById("closebtn").style.display="none";


};


 


ws.onopen = function() {


ws.send("Hello, Jkas");


};


socket = ws;


}


 


function say()


{


socket.send(speak.value);


}



function closews()

{socket.send('{"cmd":"close"}');

}


function loginws()

{socket.send('{"cmd":"login","uid":"zhou666"}');

}


</script>

</body>

</html>


服务器端:

wsend("zhou886","I love you!");