Avatar
1
Vương Võ Thành Beginner
WebSocket không connect được
Cho em hỏi là em đang thử làm cái chat websocket. Em có xem code trên mạng và tách nó ra BE và FE. Nhưng chạy thì nó không connect được.

nó chạy dòng 26 xong là không pass được tới dòng 27 ạ.

còn đây là code BE ạ.

  • Answer
websocket
Remain: 5
2 Answers
Avatar
tvd12 Beginner
tvd12 Beginner
Nhìn thế này anh không nhận ra vấn đề gì, em có thể upload mã nguồn đầy đủ lên github được không?
  • 0
  • Reply
https://github.com/vuongvt2/demo-web-socket

dạ đây ạ. Em cũng chỉ là clone code của nơi khác về rồi gắn vào test thử ạ. Nó làm MVC nhưng e tìm source rồi chia ra test ạ. Anh xem giúp e ạ.

 –  Vương Võ Thành 1669454089000
Nếu a đã có source config hay tương tự như thế thì a share cho e xem với ạ. Và e có 1 thắc mắc là khi e config như trên ở phía BE thì e có thể test bằng postman như nào được không ạ?  –  Vương Võ Thành 1669454435000
Avatar
tvd12 Beginner
tvd12 Beginner
  1. File WebSocketConfig em sẽ cần sửa:

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
	registry
		.addEndpoint("/websocket")
		.setAllowedOrigins("*")
		.withSockJS();
//		registry.addEndpoint("/websoket").withSockJS();
}

File main.js

function connect() {
....
   var socket = new SockJS('http://localhost:8083/websocket');
}

File test.html

<button <span><span>type</span></span>=<span>"button"</span> <span><span>class</span></span>=<span>"accent username-submit"</span> onclick=<span>"connect();"</span>><span>Bat</span> dau tro chuyen</button>
  • 0
  • Reply
Về đoạn code var socket = new SockJS('http://localhost:8083/websocket'); này em không biết lý do vì sao ở trên mạng em thường thấy là ở trước url lại có ws thay vì http:// vậy ạ? Và làm sao em có thể reply code của em có định dạng như anh có định dạng đẹp như vậy mà không cần chụp lại vậy ạ  –  Vương Võ Thành 1669460050000
  1. Em vào phần network của trình duyệt, em sẽ thấy phần request:
Request URL: ws://localhost:8083/websocket/983/plkadqjf/websocket

Nó có prefix là ws cho dù ở code em đang để là http, như vậy thì có thể bên trong thư viện SockJS nó sẽ 1 bước chuyển schema http sang ws.

  1. Em có thể tham khảo tại đây nhé: https://stackask.com/question/lam-sao-de-viet-code-trong-cau-hoi/
 –  tvd12 1669487974000
Em đang dùng @SendTo("/topic/public") ở bên BE để bên FE có thể subscribe. Nhưng vấn đề hiện tại em muốn nó subscribe tới 1 topic riêng thì em dùng @SendTo("/topic/public/{eventId}") để subscribe theo 1 event nào đó được không ạ?  –  Vương Võ Thành 1669497516000
Em tạo câu hỏi khác nhé  –  tvd12 1669506755000