นานมาแล้วเพื่อให้ได้เอฟเฟกต์อย่างรวดเร็วฉันใช้การสำรวจเพื่อใช้ฟังก์ชั่นการแชทออนไลน์ หลังจากนั้นฉันก็ติดต่อซ็อกเก็ตโดยไม่ได้ตั้งใจ เกี่ยวกับซ็อกเก็ตความเข้าใจของฉันคือการสื่อสารระหว่างกระบวนการ ก่อนอื่นจะต้องมีเซิร์ฟเวอร์และไคลเอนต์ บริการเริ่มต้นและรับฟังพอร์ต IP บางตัวเพื่อค้นหากระบวนการ ไคลเอนต์เปิดซ็อกเก็ตจัดสรรพอร์ต IP เพื่อเชื่อมต่อกับพอร์ต IP บนเซิร์ฟเวอร์ดังนั้นการสื่อสารระหว่างสองกระบวนการสามารถทำได้ ลองวาดภาพเรียบง่ายด้านล่างเพื่อทำความเข้าใจ
แต่วันนี้ฉันยังคงวางแผนที่จะแบ่งปันการใช้ WebSocket ก่อนแล้วจึงวางรหัสแล้ววางรหัส
ขั้นตอนแรกคือการเริ่มต้นบริการซ็อกเก็ต
จากนั้นเชื่อมต่อกับไคลเอนต์และเชื่อมต่อกับเซิร์ฟเวอร์เข้าร่วมห้องแชทและใช้ Googel (Bai Yujing, Shen Lang), Firefox (Chu Liuxiang) และ I (Li Xunhuan) เพื่อทดสอบและเอฟเฟกต์มีดังนี้
-
******************* การเชื่อมต่อ
********************** Disconnect
ด้านล่างเป็นซอร์สโค้ดของการทดสอบนี้
เซิร์ฟเวอร์:
Public Class TestWebSocketController: คอนโทรลเลอร์ {WebSocketServer Server; รายการ <SessionInfo> listSession = รายการใหม่ <SessionInfo> (); Public ActionResult Index () {return view (); } // บริการเริ่มสตริงสาธารณะเริ่มต้น () {var ip = "192.168.1.106"; var port = "1010"; เซิร์ฟเวอร์ = ใหม่ webSocketServer (); if (! server.setup (IP, int.parse (พอร์ต))) {return "ข้อผิดพลาดเริ่มต้นบริการ WebSocket"; } // เซิร์ฟเวอร์การเชื่อมต่อเซสชันใหม่ NewSessionConnected += SessionConnected; // เซสชันปิดเซิร์ฟเวอร์ SessionClosed += SessionClosed; // ข้อความใหม่ที่ได้รับเซิร์ฟเวอร์ NewMessageCeived += Messagereceived; if (! server.start ()) {// การประมวลผลข้อความการฟังความล้มเหลวส่งคืน "ข้อผิดพลาด"; } return "ความสำเร็จ"; } /// <summary> /// ปิดเซสชัน /// </summary> /// <param name = "session"> </param> /// <param name = "value"> </param> โมฆะส่วนตัวเซสชัน (sessions session, supersocket.socketbase.closereason) {debug.writeline {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 = "เซสชัน"> </param> โมฆะส่วนตัวเซสชันการเชื่อมต่อ (sessions sessions {debug.writeLine ("SessionId ใหม่: {1} เวลา: {2: HH: MM: SS}", เซสชัน listsession.add (ใหม่ sessionInfo {sessionId = session.sessionId, endpoint = session.remoteendpoint.toString ()}); } /// <summary> /// ข้อความที่ได้รับ /// </summary> /// <param name = "เซสชัน"> </param> /// <param name = "value"> </param> โมฆะส่วนตัว messagereceived (session session, {value); foreach (รายการ var ใน listsession) {/// ส่งข้อความ sendmsg (item.sessionId, string.format ("{0} ส่งข้อความ: {1}", message.name, message.message)); }} // <summary> /// ส่งข้อความ /// </summary> /// <param name = "sessionId"> </param> /// <param name = "msg"> </param> โมฆะส่วนตัว sendmsg (สตริงเซสชัน, สตริง msg) if (appsession! = null) appsession.send (msg); } Public Class MessageInfo {ชื่อสตริงสาธารณะ {get; ชุด; } ข้อความสตริงสาธารณะ {get; ชุด; }} คลาสสาธารณะ SessionInfo {Public String SessionId {get; ชุด; } จุดสิ้นสุดสตริงสาธารณะ {get; ชุด; } // ชื่อสตริงสาธารณะ {get; ชุด; -ลูกค้า:
@{viewbag.title = "index";} <h2> ดัชนี </h2> <script src = "../ สคริปต์/jQuery-1.8.2.js"> </script> <อินพุต type = "text" id = "txtName"/> <อินพุตประเภท = " id = "btndisconnection" /> <อินพุต type = "text" id = "txtInput" /> <อินพุตประเภท = "ปุ่ม" value = "ส่ง" id = "btnSend" /> <div id = "msg"> < /div> <script language = "javascript" type = "text /javascript" var url = "ws: //192.168.1.106: 1010" $ ("#btnconnection") คลิก (ฟังก์ชั่น () {ถ้า ("websocket" ในหน้าต่าง) {ws = new WebSocket (url); ต่ำโปรดอัพเกรดเบราว์เซอร์ของคุณ "); // ลงทะเบียนการโทรกลับต่าง ๆ ws.onopen = function () {$ ("#msg ") ผนวก ($ ("#txtname "). val () +" เพิ่มในห้องแชท <br /> ");} ws.onclose = function () /> ");} ws.onMessage = function (teamiveMsg) {$ ("#msg ") ผนวก (teceivemsg.data +" <br /> ");} // ฟังเหตุการณ์ปิดหน้าต่าง ws.close ();}}); //$("#btndisconnection" ).Click(Function () {// $ ("#msg"). ผนวก ($ ("#txtname"). val () + "ออกจากห้องแชท <br />"); // ws.close (); //}); $ ("#btnsend") คลิก (ฟังก์ชัน () {ถ้า (ws.readystate == websocket.open) {var message = "{/" ชื่อ/":/" " + $ ("#txtname ") val () +"/"/" ข้อความ/":/" + $ ("#txtinput") $ ("#msg") ข้อความ ("การเชื่อมต่อถูกปิด!");}}); </script>สรุป
ข้างต้นคือการใช้ WebSocket ใน Java เพื่อใช้ฟังก์ชั่นการแชทออนไลน์ที่บรรณาธิการแนะนำให้คุณรู้จัก ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!