ผล
เบราว์เซอร์ที่ไม่รองรับ WebSocket ใช้ Flash เพื่อจำลอง WebSocket แน่นอน
ในความเป็นจริงโปรโตคอล WebSocket นั้นค่อนข้างง่ายและง่ายกว่าที่จะจำลองด้วย ActionScript
นอกจากนี้สปริงให้ APIs สำหรับ SockJs ฉันยังไม่เห็นมัน
คำอธิบายบางอย่าง:
1. การใช้การห่อหุ้ม Websocket ของ Spring สามารถใช้เพียงอย่างเดียวหรือกับ Spring MVC ควรสังเกตว่าเมื่อใช้เพียงอย่างเดียวคุณยังต้องกำหนดค่า dispatcher ของ Spring ใน web.xml และคุณยังต้องเปิดเซิร์ฟเวอร์
<servlet> <servlet-name> websocket </servlet-name> <servlet-lass> org.springframework.web.servlet.dispatchervlet </servlet-class> -value> /web-inf/applicationContext.xml </param-value> </itial-param> <load-on-startup> 1 </load-startup> </servlet- mapping> <servlet-name> websocket </load-startup> /servlet-name> <url-pattern>/</url-pattern> </servlet-mapping >>
2. เมื่อใช้เพียงอย่างเดียวหากอ้างอิงข้ามโดเมนคุณจะต้องตั้งค่าการอนุญาตในฤดูใบไม้ผลิในฤดูใบไม้ผลิ
<WebSocket: Handlers อนุญาต-Origins = "*"> ........ </webSocket: Handlers>
3. เนื่องจากใช้แฟลชจึงจำเป็นต้องเปิดพอร์ต 843 และส่งคืนไฟล์นโยบายเมื่อ Flash ร้องขอไฟล์นโยบาย ตัวอย่างคือ Netty4
4. คุณต้องสกัดกั้นและตรวจสอบการจับมือกัน เพราะในคลาสการประมวลผล WebSocket มันเป็นไปไม่ได้ที่จะได้รับเซสชันจาก WebSocketSession
Public Class ChatinterCepter Extends HttpSessionhandShaandshakeinterCepTor {@Override Public Boolean BeforehandShake (ServerHttprequest Request, Response, WebSocketHandler Wshandler, Map <string, Object> Attributes) Throws Exception {if (Request Instanceof Servlettprequest) { Prequest ServletRequest = (ServletServerHttprequest) Request; httpsession session = ServletRequest .getServletRequest () ("" ก่อนการจับมือกัน "+request.getheaders ()); // return super.beforehandshake (คำขอ, การตอบสนอง, wshandler, แอตทริบิวต์); return true; .............
5. ใน Web-Socket-JS ข้อมูลส่วนหัวของ WebSocket ที่จำลองโดย Flash จะมีคุกกี้ แต่จะถูกเพิ่มโดยสคริปต์ ดังนั้นเพื่อหลีกเลี่ยงคุกกี้ที่ต้องการเช่นคุกกี้เซสชันคือ httponly
หากมีการพัฒนาในคราสในปัจจุบัน
จะเห็นได้ว่าการเพิ่ม usehttponly = 'false' จะถูกเพิ่มลงในแท็กบริบทและแท็กบริบทจะถูกเพิ่มโดยอัตโนมัติเมื่อมีการปรับใช้ eclipse
หากคุณได้บรรจุไว้แล้วให้ไปที่ไดเรกทอรี Tomcat /conf/server.xml ให้เพิ่มก่อน </host> ล่าสุด
คัดลอกรหัสรหัสดังนี้:
<context DOCBASE = "WebSocket" path = "/webSocket" reloadable = "true" usehttponly = 'false'/>
ความหมายของสิ่งนี้คือเนื้อหาทั้งหมดของบทความนี้ฉันหวังว่าทุกคนจะชอบ