websocketjava,websocketjava回调

http://www.itjxue.com  2023-01-20 07:24  来源:未知  点击次数: 

java怎么做websocket

package com.bpms.interfaces.communicate.paycode;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.net.ConnectException;

import java.net.InetSocketAddress;

import java.net.Socket;

import java.net.SocketAddress;

import com.unify.cc.common.CommonUtil;

public class SocketSend {

private String host = "11.1.66.193";

private int port = 2345;

private Socket client;

private SocketAddress remoteAddr;

private DataOutputStream os;

private DataInputStream is;

private int overTime = 0;

private int maxChang = 256;

private String error = "";

/**

* 只配服务端的地址和端口

* @param host 服务端IP

* @param port 服务端端口

*/

public SocketSend(String host , int port) {

this.host = host;

this.port = port;

}

/**

* 设置连接报文长度的配置

* @param host IP

* @param port 端口

* @param maxChang 指定接收报文长度

*/

public SocketSend(String host , int port , int maxChang) {

this.host = host;

this.port = port;

if(maxChang != 0)

this.maxChang = maxChang;

}

/**

* 设置连接连接超时的配置

* @param host IP

* @param port 端口

* @param maxChang 指定接收报文长度

* @param overTime 连接超时时间

*/

public SocketSend(String host , int port , int maxChang , int overTime) {

this.host = host;

this.port = port;

if(maxChang != 0)

this.maxChang = maxChang;

if(overTime != 0)

this.overTime = overTime;

}

/**

* 初始化参数

* @throws IOException

*/

public void init() throws IOException {

if(client == null)

client = new Socket();

remoteAddr = new InetSocketAddress(host,port); //创建客户端连接地址

try{

if(overTime != 0) {

client.connect(remoteAddr,overTime);

}

else {

client.connect(remoteAddr);

}

} catch (ConnectException e) {

error = "SocketSend - init ConnectionServicesException";

return;

}

is = new DataInputStream(client.getInputStream()); //获得服务端输出流

os = new DataOutputStream(client.getOutputStream()); //获得服务端输入流

}

/**

* 关闭连接

* @throws IOException

*/

private void close() throws IOException{

if (os != null) {

os.close();

}

if(is != null) {

is.close();

}

if(client != null) {

client.close(); //关闭连接器

}

}

/**

* 写入流

*/

public void writeMessage(byte[] byt){

try {

os.write(byt); //在服务端写入报文

os.flush();

} catch (IOException e) {

CommonUtil.debug("SocketSend - writeMessage 报文写入异常");

e.printStackTrace();

}

}

/**

* @param message 报文

* @return 返回报文

* @throws IOException , Exception

*/

public byte[] execute(byte[] byt) throws Exception{

init();

byte[] buf = null;

//连接异常不做处理

if("".equals(error)){

writeMessage(byt);

buf = new byte[maxChang];

if (is != null) {

is.read(buf);//读入数据到缓冲区

}

close();

}else {

close();

throw new Exception(error);

}

return buf;

}

}

java消息推送websocket怎么实现

java消息推送websocket实现原理:在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” 。在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

在以前的消息推送机制中,用的都是 Ajax 轮询(polling),在特定的时间间隔由浏览器自动发出请求,将服务器的消息主动的拉回来,这种方式是非常消耗资源的,因为本质还是http请求,而且显得非常笨拙。而WebSocket 在浏览器和服务器完成一个握手的动作,在建立连接之后,服务器可以主动传送数据给客户端,客户端也可以随时向服务器发送数据。

WebSocket协议是基于TCP的一种新的网络协议。实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。也可以选择第三方推送平台来实现,比如极光推送就不错。

java websocket 怎么启动service

java websocket 启动service的方法:

/**

* 当连接建立成功的时候触发

*

* @param session

*/

@Resource

private IPhoneService phoneService;

/* private IPhoneService phoneService;

public void setIPhoneService(IPhoneService phoneService){

this.phoneService=phoneService;

}*/

@OnOpen

public void onOpen(Session session) {

logger_.info("Web-socket session " + session.getId() + " connected.");

try {

for (Session sess : session.getOpenSessions()) {

sess.getBasicRemote().sendText("Session " + session.getId() + " 加入连接 ");

}

} catch (Exception e) {

}

}

/**

* 当接收到消息的时候触发

*

* @param message

* @param session

*/

@SuppressWarnings("static-access")

@OnMessage

public void onMessage(String message, Session session) {

logger_.info("Received message: '" + message + "'. from session: "

+ session.getId() + ". Thread ID: "

+ Thread.currentThread().getId());

try {

// 延迟发送消息

Thread.currentThread().sleep(StaticValues.REFRESH_TIME);

// 向前台发送消息

for (Session sess : session.getOpenSessions()) {

if (session == null) {

return;

}

/* ApplicationContext ac = new ClassPathXmlApplicationContext("spring/mvc.xml");//新加1

AutowireCapableBeanFactory factory = ac.getAutowireCapableBeanFactory();

EmbedDaoImpl bean = factory.createBean(EmbedDaoImpl.class);*/

System.out.println(phoneService);

sess.getBasicRemote().sendText(session.getId() + ": " + message);

}

} catch (Exception e) {

e.printStackTrace();

}

}

java的websocket用的是什么包

websocket 是在tomcat里面的。

WebSocket 作为java的一个扩展,它属于javax包目录下,通常需要手工引入该jar,以tomcat为例,可以在 tomcat/lib 目录下找到。

(责任编辑:IT教学网)

更多