当前位置:首页 » 编程语言 » websocketjava

websocketjava

发布时间: 2022-05-05 21:53:56

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

  1. 服务器端实现(Tomcat)

  2. 客户端实现(Java-WebSocket)

  3. 客户端实现(Javascript原生API)

③ java的websocket用的是什么包

websocket 是在tomcat里面的。

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

④ java消息推送websocket怎么实现

java消息推送websocket实现原理:在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” 。在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
在以前的消息推送机制中,用的都是 Ajax 轮询(polling),在特定的时间间隔由浏览器自动发出请求,将服务器的消息主动的拉回来,这种方式是非常消耗资源的,因为本质还是http请求,而且显得非常笨拙。而WebSocket 在浏览器和服务器完成一个握手的动作,在建立连接之后,服务器可以主动传送数据给客户端,客户端也可以随时向服务器发送数据。
WebSocket协议是基于TCP的一种新的网络协议。实现了浏览器与服务器全双工(full-plex)通信——允许服务器主动发送信息给客户端。也可以选择第三方推送平台来实现,比如极光推送就不错。

⑤ websocket怎样用java

java7 开始支持WebSocket,并且只是做了定义,并未实现
tomcat7及以上,jetty 9.1及以上实现了WebSocket,其他容器没有研究
spring 4.0及以上增加了WebSocket的支持
spring 支持STOMP协议的WebSocket通信
WebSocket 作为java的一个扩展,它属于javax包目录下,通常需要手工引入该jar,以tomcat为例,可以在 tomcat/lib 目录下找到 websocket-api.jar

⑥ java 有什么比较好的websocket客户端框架

本文是我在实践过程中的记录,我的目标是使用spran-websocket,netty, undertow和node.js四种框架分别实现C1000K的服务器,看看这几个框架实现的难以程度,性能如何。开发语言为Scala和Javascript。
当然,谈起性能,我们还必须谈到每秒每个连接有多少个请求,也就是RPS数,还要考虑每条消息的大小。
一般来说,我们会选取一个百分比,比如每秒20%的连接会收发消息。我的需求是服务器只是push,客户端不会主动发送消息。 一般每一分钟会为这一百万群发一条消息。
所以实现的测试工具每个client建立60000个websocket连接,一共二十个client。实际不可能使用20台机器,我使用了两台AWS C3.2xlarge(8核16G)服务器作为客户端机。每台机器10个客户端。
四个服务器的代码和Client测试工具代码可以在github上下载。 (其实不止四种框架了,现在包括Netty, Undertow, Jetty, Spray-websocket, Vert.x 和 Node.js 六种框架的实现)

⑦ 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 ("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 web和websocket实现网页即时通讯

使用7z格式压缩上传
下载1: http://vdisk.weibo.com/s/D7LHb/1369631064
下载2: att.newsmth.net/att.php?p.75.25665.766.7z

Java版源代码下载:http://vdisk.weibo.com/s/I26Jq
(有些网友对C++如何实现感兴趣,推荐一下Poco带的WebSocket功能,把Java源代码翻译成C++就行了)

1. 说明:

utf8版本,支持各种语言版本的windows系统
程序内嵌数据库
用户帐号非明文存储
在Firefox/Chrome浏览器测试通过,建议使用Chrome,Firefox不支持mp3的消息提示音
2. 现有功能

注册/登录/搜索/添加好友(需要双方互相添加对方为好友,才能互相聊天)
抖动窗口

两种状态,登录/离线
3.可扩展的功能

使用Windows域用户帐号,无需注册
收发离线信息
查看历史信息
新消息提示
群聊
共享文件

4. (可能)存在的问题

并发性未作充分测试
添加好友的确认

5. 适用的场景

学校
小公司

6.使用
解压后双击执行start.bat,将自动进入初始界面,如下图
默认使用80端口,若80端口已被占用,修改start.bat中的setserver_port=80

双击左上角图标,弹出对话框,可以选择注册

注册成功

登录

搜索好友,如不提供搜索条件,则返回所有已注册用户

添加好友

添加好友提示

聊天

热点内容
塑料解压 发布:2024-05-20 03:50:09 浏览:75
python在服务器端开发 发布:2024-05-20 03:31:17 浏览:66
编程大冒险 发布:2024-05-20 03:19:27 浏览:637
阿瓦隆九个人怎么配置 发布:2024-05-20 02:57:47 浏览:758
sqlnotinexcept 发布:2024-05-20 02:53:10 浏览:342
激光切割编程教程难吗 发布:2024-05-20 02:49:57 浏览:926
sqlbool 发布:2024-05-20 02:49:57 浏览:722
如何把文件压缩到最小 发布:2024-05-20 02:25:03 浏览:452
javash脚本文件 发布:2024-05-20 01:43:11 浏览:830
安卓手机如何登陆刺激战场国际服 发布:2024-05-20 01:29:02 浏览:861