當前位置:首頁 » 編程語言 » 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

雙擊左上角圖標,彈出對話框,可以選擇注冊

注冊成功

登錄

搜索好友,如不提供搜索條件,則返回所有已注冊用戶

添加好友

添加好友提示

聊天

熱點內容
python浮點數取整 發布:2024-05-08 07:15:07 瀏覽:137
二手汽車解壓程序 發布:2024-05-08 07:14:13 瀏覽:513
android和php最佳實踐 發布:2024-05-08 07:10:07 瀏覽:852
安卓手機屏幕變了顏色怎麼回事 發布:2024-05-08 07:09:56 瀏覽:450
安卓手機怎麼拍人物和場景 發布:2024-05-08 06:55:39 瀏覽:281
phpurl中文亂碼 發布:2024-05-08 06:25:34 瀏覽:53
社保賬戶及密碼忘了怎麼辦 發布:2024-05-08 06:25:32 瀏覽:750
個人熱點的密碼怎麼改 發布:2024-05-08 06:19:13 瀏覽:639
傳遞加密 發布:2024-05-08 06:19:02 瀏覽:682
c語言是啥意思啊 發布:2024-05-08 06:01:09 瀏覽:696