spring boot 에 netty socket. io 통합

5170 단어 2.JavaWeb
주로 참 고 했 습 니 다. http://blog.csdn.net/gisam/article/details/78550003
pom. xml 에 의존 도 를 추가 합 니 다.

		
			com.corundumstudio.socketio
			netty-socketio
			1.7.11
		

프로그램 애플 리 케 이 션 의 입구 에 socketio 시작 코드 를 추가 합 니 다.
import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.annotation.SpringAnnotationScanner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class BuyLogApplication {

	public static void main(String[] args) {
		SpringApplication.run(BuyLogApplication.class, args);
	}


	@Bean
	public SocketIOServer socketIOServer() {
		com.corundumstudio.socketio.Configuration config = new com.corundumstudio.socketio.Configuration();
		
		String os = System.getProperty("os.name");
		if(os.toLowerCase().startsWith("win")){   //   window      localhost
			System.out.println("this is  windows");
			config.setHostname("localhost");
		} else {
			config.setHostname("123.123.111.222");   //                       ip
		}
		config.setPort(9092);

		/*config.setAuthorizationListener(new AuthorizationListener() {//     
			@Override
			public boolean isAuthorized(HandshakeData data) {
				//http://localhost:8081?username=test&password=test
				//            connect,                ,        
				// String username = data.getSingleUrlParam("username");
				// String password = data.getSingleUrlParam("password");
				return true;
			}
		});*/


		final SocketIOServer server = new SocketIOServer(config);
		return server;
	}

	@Bean
	public SpringAnnotationScanner springAnnotationScanner(SocketIOServer socketServer) {
		return new SpringAnnotationScanner(socketServer);
	}
}

세 가지 유형 을 넣다
import com.corundumstudio.socketio.SocketIOServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;


@Component
@Order(value=1)
public class MyCommandLineRunner implements CommandLineRunner {
    private final SocketIOServer server;


    @Autowired
    public MyCommandLineRunner(SocketIOServer server) {
        this.server = server;
    }


    @Override
    public void run(String... args) throws Exception {
        server.start();
        System.out.println("socket.io    !");
    }
}
class MessageInfo {
    String MsgContent;

    public String getMsgContent() {
        return MsgContent;
    }

    public void setMsgContent(String msgContent) {
        MsgContent = msgContent;
    }
}
import com.corundumstudio.socketio.AckRequest;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.annotation.OnConnect;
import com.corundumstudio.socketio.annotation.OnDisconnect;
import com.corundumstudio.socketio.annotation.OnEvent;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.UUID;


@Component
public class MessageEventHandler {
    public static SocketIOServer socketIoServer;
    static ArrayList listClient = new ArrayList<>();
    static final int limitSeconds = 60;

    @Autowired
    public MessageEventHandler(SocketIOServer server) {
        this.socketIoServer = server;
    }

    @OnConnect
    public void onConnect(SocketIOClient client) {
        listClient.add(client.getSessionId());
        System.out.println("   :" + client.getSessionId() + "   ");
    }

    @OnDisconnect
    public void onDisconnect(SocketIOClient client) {
        System.out.println("   :" + client.getSessionId() + "    ");
    }


    @OnEvent(value = "messageevent")
    public void onEvent(SocketIOClient client, AckRequest request, MessageInfo data) {
        System.out.println("    :" + data.getMsgContent());
        socketIoServer.getClient(client.getSessionId()).sendEvent("messageevent", "back data");
    }


    public static void sendBuyLogEvent() {   //            
        String dateTime = new DateTime().toString("hh:mm:ss");

        for (UUID clientId : listClient) {
            if (socketIoServer.getClient(clientId) == null) continue;
            socketIoServer.getClient(clientId).sendEvent("enewbuy", dateTime, 1);
        }
    }

뒤쪽 이 바로 백 엔 드 입 니 다. Message EventHandler 를 통 해 클 라 이언 트 에 게 메 시 지 를 보 냈 습 니 다.
클 라 이언 트 html
인용  
js 파일 https://socket.io/  다운로드 하 다.
그리고 js 메시지 송 수신 코드 를 쓰 세 요.

좋은 웹페이지 즐겨찾기