Mình cũng từng làm cách như bạn r, chỉ khác là vì mình trả về dùng websocket chứ ko dùng push thôi
Cách đó mình thấy ok, không phải giữ connection quá nhiều trên server, nhưng do leader bên mình làm bên iOS không thích cách đó, chỉ muốn request và nhận response đều bằng API hết, vậy mới mệt
Mình nghĩ vấn đề thực sự nằm ở trưởng nhóm của bạn.
Long Polling không phải là một công nghệ mới. Nó thực chất chỉ là một giải pháp không chính thống (hacky solution) để giải quyết vấn đề giao tiếp 2 chiều (bidirectional communication) do HTTP chỉ có thể giao tiếp 1 chiều. Long Polling AJAX khởi tạo kết nối HTTP và giữ kết nối tồn tại trong một khoảng thời gian để chờ phản hồi. Chính vì lẽ đó mà việc xử lý bằng Long Polling thường tốn CPU, độ trễ cao (high latency), phức tạp và kém trong việc xử lý nhiều client (scaling).
WebSocket được thiết kế để xử lý thời gian thực (realtime) và thay thế các giải pháp giao tiếp 2 chiều không chính thống hiện tại, trong đó có Long Polling. Khi thực hiện một kết nối bằng giao thức HTTP, các dữ liệu như headers, cookies và các dữ liệu khởi tạo khác, được gửi kèm ở mỗi kết nối. Trong khi đó, WebSocket được xây dựng trên nền tảng giao thức TCP và chỉ thực hiện khởi tạo kết nối một lần duy nhất trong một phiên sử dụng. Điều này giúp WebSocket giảm tối đa độ trễ do khởi tạo kết nối (latency) và loại bỏ hầu hết các dữ liệu HTTP không cần thiết. Ngoài ra, với WebSocket, sau khi kết nối được khởi tạo thành công, client hoặc server có thể gửi phản hồi ở bất cứ một thời điểm nào mà không cần phải chờ đợi tín hiệu từ bên còn lại. Khả năng này mang lại sự vượt trội cho WebSocket so với Long Polling ở cả việc giảm độ trễ của phản hồi lẫn CPU cycle cần thiết. Hơn nữa, ở thời điểm hiện tại, WebSocket là giải pháp tốt nhất để xử lý một lượng lớn client.
Để kết luận, mình khẳng định là không có lí do gì để sử dụng Long Polling thay cho WebSocket.
Bạn có thể tham khảo thêm ở các đường link chính thức dưới đây:
[1] http://www.websocket.org/quantum.html
[2] http://stackoverflow.com/questions/10028770/html5-websocket-vs-long-polling-vs-ajax-vs-webrtc-vs-server-sent-events
[3] http://stackoverflow.com/questions/11077857/what-are-long-polling-websockets-server-sent-events-sse-and-comet