websocket浅谈

1、怎么搭建一个简易的websocket架子,让前端后端用来交互?

我们采用引入三方jar的方式进行搭建,需要的jar如下:

复制代码
       <dependency>
            <groupId>org.atmosphere</groupId>
            <artifactId>atmosphere-runtime</artifactId>
        </dependency>

        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
        </dependency>

需要再web,xml里面进行配置一个servlet

复制代码
    <servlet>
        <description>AtmosphereServlet</description>
        <servlet-name>AtmosphereServlet</servlet-name>
        <servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class>
        <init-param>
            <param-name>org.atmosphere.cpr.packages</param-name>
            <param-value>具体的包的目录</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>
    <servlet-mapping>
        <servlet-name>AtmosphereServlet</servlet-name>
        <url-pattern>/websocket/*</url-pattern>
    </servlet-mapping>

前端需要引入 atmosphere.js

前端可以封装一个简易的调用

复制代码
html:

<input id="send" type="input">
<input type="button" onclick="send()" value="发送">
<span id="sendvalue"></span>




js:

var request={
            url:'http://localhost:8082/工程名称/websocket/test',
            contentType:"application/json",
            transport:"websocket",
            fallbackTransport:"long-polling",
            onTransportFailure: function(errorMsg, request) {
                request.fallbackTransport = "long-polling";
                transport = "long-polling";
            },
            onMessage:function(response) {
                var msgStr = response.responseBody;
                $("#sendvalue").text(msgStr);
                }


        }
        var subSocket=atmosphere.subscribe(request);


        function send(){
            var send=$('#send').val();
            subSocket.push(send);
        }

后端接收代码

复制代码
import lombok.extern.slf4j.Slf4j;
import org.atmosphere.config.service.Disconnect;
import org.atmosphere.config.service.ManagedService;
import org.atmosphere.config.service.Message;
import org.atmosphere.config.service.Ready;
import org.atmosphere.cpr.Broadcaster;

import javax.inject.Inject;
import javax.inject.Named;

@Slf4j
@ManagedService(path = "websocket/test")
public class WebsocketTest {


    @Inject
    @Named("websocket/test")
    private static Broadcaster broadcaster;

    @Ready
    public void onReady() {
        log.info("onReady"); //准备
    }

    @Disconnect
    public void onDisconnect() {
        log.info("onDisconnect"); //销毁
    }

    @Message
    public void onMessage(String message) {
        log.info("onMessage");
        broadcaster.broadcast(message);  //发送给前端
    }
}
相关推荐
智_永无止境3 小时前
基于Netty的WebSocket服务端
websocket
我是海飞4 小时前
杰理 AC792N WebSocket 客户端例程使用测试教程
c语言·python·单片机·websocket·网络协议·嵌入式·杰理
傣味洋芋9 小时前
WebSocket
网络·vue.js·websocket·网络协议
❆VE❆10 小时前
websocket升级:实时通信实现竞价间功能、心跳+重连
网络·websocket·网络协议
李小狼lee1 天前
websocket的理解,写一个在线聊天室
websocket
阿萨德528号1 天前
Spring Boot + WebSocket超简单实战源码(前后端实时交互)
spring boot·websocket·交互
CryptoRzz2 天前
印度尼西亚(IDX)股票数据对接开发
java·后端·websocket·web3·区块链
mudtools2 天前
飞书 .NET SDK 事件处理的幂等性与去重机制
websocket·.net·飞书·webhook
weixin79893765432...2 天前
深入浅出 WebSocket 协议
websocket·http·socket·sse
callJJ2 天前
WebSocket 两种实现方式对比与入门
java·python·websocket·网络协议·stomp