国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java中使用websocket實現(xiàn)在線聊天功能

Java中使用websocket實現(xiàn)在線聊天功能

2021-04-06 11:39天上白玉京 Java教程

這篇文章主要介紹了Java中使用websocket實現(xiàn)在線聊天功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

很早以前為了快速達到效果,使用輪詢實現(xiàn)了在線聊天功能,后來無意接觸了socket,關于socket我的理解是進程間通信,首先要有服務器跟客戶端,服務的啟動監(jiān)聽某ip端口定位該進程,客戶端開啟socket分配ip端口連接服務端ip端口,于是兩個進程間便可以通信了。下面簡單畫個圖理解。

Java中使用websocket實現(xiàn)在線聊天功能

but,今天還是準備分享websocket的使用,先上效果,再貼代碼。

第一步啟動socket服務。

Java中使用websocket實現(xiàn)在線聊天功能

然后連接客戶端連接服務器,加入聊天室,分別使用googel(白玉京,沈浪),火狐(楚留香),ie(李尋歡)進行測試,效果如下。

Java中使用websocket實現(xiàn)在線聊天功能

*

*****************斷開一下。

Java中使用websocket實現(xiàn)在線聊天功能

******************斷開一下。

Java中使用websocket實現(xiàn)在線聊天功能

下面是本次測試源碼。

服務端:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
public class testwebsocketcontroller : controller
 {
   websocketserver server;
   list<sessioninfo> listsession = new list<sessioninfo>();
   public actionresult index()
   {
     return view();
   }
   //服務啟動
   public string start()
   {
     var ip = "192.168.1.106";
     var port = "1010";
     server = new websocketserver();
     if (!server.setup(ip, int.parse(port)))
     {
       return "websocket服務啟動error";
     }
     //新的會話連接
     server.newsessionconnected += sessionconnected;
     //會話關閉
     server.sessionclosed += sessionclosed;
     //新的消息接收
     server.newmessagereceived += messagereceived;
     if (!server.start())
     {
       //處理監(jiān)聽失敗消息
       return "error";
     }
     return "success";
   }
   /// <summary>
   /// 會話關閉
   /// </summary>
   /// <param name="session"></param>
   /// <param name="value"></param>
   private void sessionclosed(websocketsession session, supersocket.socketbase.closereason value)
   {
     debug.writeline("會話關閉,關閉原因:{0} 來自:{1} 時間:{2:hh:mm:ss}", value, session.remoteendpoint, datetime.now);
     //sendmsgtoremotepoint(sessionid, sessionid + "已斷開");
     var sessionremove = listsession.firstordefault(s => s.sessionid == session.sessionid);
     listsession.remove(sessionremove);
   }
   /// <summary>
   /// 會話連接
   /// </summary>
   /// <param name="session"></param>
   private void sessionconnected(websocketsession session)
   {
     debug.writeline("新的會話連接 來自:{0} sessionid:{1} 時間:{2:hh:mm:ss}", session.remoteendpoint, session.sessionid, datetime.now);
     listsession.add(new sessioninfo { sessionid = session.sessionid, endpoint = session.remoteendpoint.tostring() });
   }
   /// <summary>
   /// 消息接收
   /// </summary>
   /// <param name="session"></param>
   /// <param name="value"></param>
   private void messagereceived(websocketsession session, string value)
   {
     //反序列化消息內(nèi)容
     var message = jsonconvert.deserializeobject<messageinfo>(value);
     foreach (var item in listsession)
     {
       ///發(fā)送消息
       sendmsg(item.sessionid, string.format("{0}發(fā)來消息:{1}", message.name, message.message));
     }
   }
   // <summary>
   /// 發(fā)送消息
   /// </summary>
   /// <param name="sessionid"></param>
   /// <param name="msg"></param>
   private void sendmsg(string sessionid, string msg)
   {
     var appsession = server.getappsessionbyid(sessionid);
     if (appsession != null)
       appsession.send(msg);
   }
   public class messageinfo
   {
     public string name { get; set; }
     public string message { get; set; }
   }
   public class sessioninfo
   {
     public string sessionid { get; set; }
     public string endpoint { get; set; }
     //public string name { get; set; }
   }
 }

 

客戶端:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
@{
  viewbag.title = "index";
}
<h2>index</h2>
<script src="../scripts/jquery-1.8.2.js"></script>
<input type="text" id="txtname" />
<input type="button" value="加入聊天室" id="btnconnection" />
<input type="button" value="離開聊天室" id="btndisconnection" />
<input type="text" id="txtinput" />
<input type="button" value="發(fā)送" id="btnsend" />
<div id="msg"></div>
<script language="javascript" type="text/javascript">
  var ws;
  var url = "ws://192.168.1.106:1010"
  $("#btnconnection").click(function () {
    if ("websocket" in window) {
      ws = new websocket(url);
    }
    else if ("mozwebsocket" in window) {
      ws = new mozwebsocket(url);
    }
    else
      alert("瀏覽器版本過低,請升級您的瀏覽器");
    //注冊各類回調(diào)
    ws.onopen = function () {
      $("#msg").append($("#txtname").val() + "加入聊天室<br />");
    }
    ws.onclose = function () {
      $("#msg").append($("#txtname").val() + "離開聊天室<br />");
    }
    ws.onerror = function () {
      $("#msg").append("數(shù)據(jù)傳輸發(fā)生錯誤<br />");
    }
    ws.onmessage = function (receivemsg) {
      $("#msg").append(receivemsg.data + "<br />");
    }
    //監(jiān)聽窗口關閉事件,當窗口關閉時,主動去關閉websocket連接,防止連接還沒斷開就關閉窗口,server端會拋異常。
    window.onbeforeunload = function () {
      ws.close();
    }
  });
  //$("#btndisconnection").click(function () {
  //  $("#msg").append($("#txtname").val() + "離開聊天室<br />");
  //  ws.close();
  //});
  $("#btnsend").click(function () {
    if (ws.readystate == websocket.open) {
      var message = "{\"name\":\"" + $("#txtname").val() + "\",\"message\":\"" + $("#txtinput").val() + "\"}";
      ws.send(message);
    }
    else {
      $("#msg").text("connection is closed!");
    }
  });
</script>

總結

以上所述是小編給大家介紹的java中使用websocket實現(xiàn)在線聊天功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網(wǎng)站的支持!

原文鏈接:http://www.cnblogs.com/baiyujing/p/8458567.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品18久久久 | 亚洲欧美激情精品一区二区 | 久久精品无码一区二区三区 | 亚洲视频在线免费观看 | 亚洲欧美高清 | 四虎久久 | 亚洲一区二区三区免费观看 | 免费网站在线 | 日韩不卡一区二区 | 一级黄色片日本 | 色视频在线免费看 | 国产免费久久 | 91精品在线看 | 最新中文字幕在线 | 99re6在线视频精品免费 | 最好看的2019年中文在线观看 | 久久免费国产 | 日韩电影专区 | 久久国产综合 | 91资源在线| 日本亚洲最大的色成网站www | 在线精品亚洲欧美日韩国产 | 亚洲免费视频在线观看 | 国产精品毛片 | 欧美黄视频 | 日本视频中文字幕 | 在线观看成人国产 | 黄毛片| 久久一日本道色综合久久 | 亚洲欧美激情精品一区二区 | 亚洲精品一区二三区不卡 | 亚洲国产精品久久久久秋霞蜜臀 | 极品久久| 日韩中文字幕 | 日本久久精品视频 | 99免费在线播放99久久免费 | 九九九九国产 | 天天爽天天干 | 日本免费在线一区 | 久久永久视频 | 免费成人av片 |