webSocket 入门demo

本文介绍了一个使用Java实现的WebSocket服务端示例,该示例通过注解定义了WebSocket的路径,并实现了消息接收、发送及连接关闭等基本功能。此外,还提供了一个简单的HTML页面用于前端测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java:

package webSocket;


import javax.websocket.OnClose;

import javax.websocket.OnMessage;

import javax.websocket.OnOpen;

import javax.websocket.Session;

import javax.websocket.server.PathParam;

import javax.websocket.server.ServerEndpoint;


@ServerEndpoint("/websocket/{user}")

public class WebSocketTest {


@OnMessage

public void onMessage(String message, Session session,@PathParam(value = "user")String user){

try {

System.err.println("session.getRequestParameterMap()>>"+session.getRequestParameterMap());

System.err.println("user>>>>>>>>>>>>>>>>"+user);

// Print the client message for testing purposes

System.out.println("Received: " + message);


// Send the first message to the client

session.getBasicRemote().sendText("This is the first server message");


// Send 3 messages to the client every 5 seconds

int sentMessages = 0;

while (sentMessages < 30) {

Thread.sleep(5000);

session.getBasicRemote().sendText("This is an intermediate server message. Count: " + sentMessages++);

}


// Send a final message to the client

session.getBasicRemote().sendText("This is the last server message");

} catch (Exception e) {

e.printStackTrace();

}

}

@OnOpen

public void onOpen() {

System.out.println("Client connected");

}


@OnClose

public void onClose() {

System.out.println("Connection closed");

}

}


备注:

1、上面这种方式类似于servlet,不需要main方法, 只需要url中写明就可以访问到

2、上面中的引入类我这里是tomcat7提供的,而不是java7 引入的

 

新建一个html页面,从前端发送请求

  1. <!DOCTYPE html>  

  2. <html>  

  3. <head>  

  4. <title>Testing websockets</title>  

  5. </head>  

  6. <body>  

  7.     <div>  

  8.         <input type="submit" value="Start" onclick="start()" />  

  9.     </div>  

  10.     <div id="messages"></div>  

  11.     <script type="text/javascript">  

  12.         var webSocket =  new WebSocket('ws://localhost:8080/a/websocket');  

  13.   

  14.         webSocket.onerror = function(event) {  

  15.             onError(event)  

  16.         };  

  17.   

  18.         webSocket.onopen = function(event) {  

  19.             onOpen(event)  

  20.         };  

  21.   

  22.         webSocket.onmessage = function(event) {  

  23.             onMessage(event)  

  24.         };  

  25.   

  26.         function onMessage(event) {  

  27.             document.getElementById('messages').innerHTML   

  28.                 += '<br />' + event.data;  

  29.         }  

  30.   

  31.         function onOpen(event) {  

  32.             document.getElementById('messages').innerHTML   

  33.                 = 'Connection established';  

  34.         }  

  35.   

  36.         function onError(event) {  

  37.             alert(event.data);  

  38.             alert("error");  

  39.         }  

  40.   

  41.         function start() {  

  42.             webSocket.send('hello');  

  43.             return false;  

  44.         }  

  45.     </script>  

  46. </body>  

  47. </html>  


IE是要在IE10才支持,websocket是  HTML5的一个新特性。

转载于:https://my.oschina.net/sphl520/blog/398376

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值