30/09/2018, 17:44

Webservice với ServerSocket TCP/IP

Lập trình socket, e tạo được 1 ứng dụng chatting giữa client và server bằng swing. Giờ e muốn sử dụng Webservice để 2 ng có thể chát được với nhau thông qua môi trường internet.
Mong các bác cho em cái hướng ạ. Thanks a lot

Chat là công việc real time không nên dùng webservice.

Mai Anh Dũng viết 19:57 ngày 30/09/2018

hmm… Đạt cũng chưa bao giờ làm Web Service, nhưng đọc lung tung thì thấy có vẻ Web Service cũng làm được chat server chứ nhỉ?

Nhân Nguyễn viết 19:50 ngày 30/09/2018

E mới làm lại, e tạo một Webservice cộng 2 số chẳng hạn, giờ mà để ứng dụng vào mô hình client server trong lập trình socket thì phải làm sao ạ. Nếu tách riêng biệt socket và webservice thì e có thể làm được, nhưng giờ lại phải kết hợp 2 cái này vào thì e chưa hiểu. Mong bác giúp e

Em chỉ thấy là không nên thôi mà anh. Vì dưới client mình phải dùng một vòng lặp để update message. Thực ra có thể dùng GCM hoặc Apple Message để thay thế được nhưng mà em nghĩ là không nên.

Em xác định WS của em dùng để làm gì trước đã.

Nhân Nguyễn viết 19:50 ngày 30/09/2018

Giả sử với cùng 1 bài toán cộng 2 số, nếu e dùng web service cũng được mà dùng socket tcp/ip cũng được. Nhưng giờ e muốn 2 cái này kết hợp với nhau. từ socket client gọi đến một Webservice để cho thằng socket server nó xử lý và trả về kết quả.

Itachi Citus viết 19:56 ngày 30/09/2018

Xài web service cũng được, xài socket cũng được không sao đâu bạn, nhất là với các hệ thống không quá lớn. Zalo có một khoảng thời gian sử dụng web service và long polling, vẫn chạy tốt, họ mới chỉ chuyển sang socket gần đây thôi khi mà số lượng khách hàng lên đến vài chục triệu.

Nếu muốn làm web service bạn phải biết sơ sơ về lập trình web trước đã, sau đó tìm hiểu về restful web service và polling. Còn nếu kết hợp cả hai thì socket đóng vai trò như của polling, khi có tin nhắn mới thì gửi request đến web services.

Nhân Nguyễn viết 19:51 ngày 30/09/2018

Chưa hiểu lắm … , bác nói rõ hơn được không ạ ?

Itachi Citus viết 19:50 ngày 30/09/2018

Chưa hiểu lắm … , bác nói rõ hơn được không ạ ?

Phần… nào hả bạn? Nếu làm web service, bạn học cách làm 1 website (đơn giản thôi, nhận, xử lý request đơn giản, trả về kết quả), rồi tìm hiểu web service, rồi đến polling. Còn nếu làm kết hợp socket với WS thì khi có tin nhắn mới, bạn gửi một gói tin thông báo có tin nhắn mới thông qua socket nào đó cho client. Nếu client muốn đọc tin nhắn đó thì mới gửi yêu cầu đến service tương ứng.

Nhân Nguyễn viết 19:58 ngày 30/09/2018

Ý tưởng của mình là như này. Mình viết 1 WS thuần là cộng 2 số nguyên chẳng hạn, sau đó mình tạo 1 socket gồm client và server. server này sẽ luôn mở cổng để nghe sự kiện từ client gửi đến sau đó trả về kết quả. Hàm tính tổng thì chỉ có trong WS, socket thì chỉ làm nhiệm vụ gọi đến thằng WS và xử lý nó.

Itachi Citus viết 19:50 ngày 30/09/2018

Tại sao lại cần xử dụng đến socket vậy, socket đóng vai trò gì trong ứng dụng của bạn?
Bạn biết mục tiêu của socket phải hok, là duy trì kết nối liên tục giữa client và server.

Ủa mà câu hỏi ban đầu là chat mà

Nhân Nguyễn viết 19:53 ngày 30/09/2018

Bạn cho mình xin fb hoặc skype nói chuyện cho dễ, giúp mình vấn đề này với @@

Nguyễn Phú viết 19:47 ngày 30/09/2018

Cơ chế của socket rất hay, nhưng chắc hẳn còn nhiều nhược điểm nên facebook vẫn còn xài long polling

Lập Trình Sư viết 19:50 ngày 30/09/2018

Không hiểu các bài viết ở trên viết gì …

Để sử dụng WS là ứng dụng chat real-time

  • Server: nhận request từ client, quản lý tạo room; dạng đơn giản nhất là lưu trữ, room_id, các client_id đăng kí vào room_id tương ứng. Cung cấp các server để xử lý request từ client.
  • Client: kết nối vào server, gửi bản tin theo mẫu server cung cấp.

Khi client gửi bản tin lên server theo mẫu đăng kí tạo room chat, thì server tạo ra 1 room với room_id và client_id đó, user khác muốn chat cùng thì phải gửi bản tin có kèm client_id của đối tượng muốn chat cùng và room_id. Khi đăng kí xong, và cùng trong room, thì thực hiện subscribe vào cái room đó, khi một tin nhắn chat tới, tức là gửi lên server, server sẽ thực hiện broadcast lại cho tất cả các client khác đã đăng kí subscribe vào room này.

@mrphu3074: facebook messenger là XMPP/Jabber nhé.

Nguyễn Phú viết 19:56 ngày 30/09/2018

em nhầm là đang nói phần chat

Bài liên quan
0