Cách sử dụng Sockets trong JavaScript \ HTML? [đóng cửa]


82

Cách sử dụng Sockets trong JavaScript \ HTML?

Có thể sử dụng một số HTML5 thú vị?

Thư viện? Hướng dẫn? Bài viết trên blog?


1
Bạn đang cố làm gì vậy? Bạn muốn hỗ trợ trình duyệt nào?
James Black

Tôi giả sử bạn đang tham khảo Web Sockets
okw

Bạn có nghĩa là ổ cắm TCP?
AlikElzin-kilaka

Câu trả lời:


57

Thông số kỹ thuật:

Bài viết:

Hướng dẫn:

Thư viện:


1
Cập nhật: bobinceđã cung cấp một hướng dẫn đơn giản trên trang này: P
okw

3
Đúng, người dùng đó có lẽ là Jonas Jacobi của Kaazing. Thường bật lên ở bất cứ nơi nào WebSocket được đề cập đến! Tôi không nhận được Kaazing TBH, đang ngồi trên websocket.org để quảng cáo những gì dường như là một giải pháp máy khách và máy chủ nguyên khối không thực sự miễn phí có hỗ trợ WebSocket dường như là một phần nhỏ so với những gì nó thực sự làm được. Tôi không biết, Nó có thể là một giải pháp tốt, nhưng tôi không thực sự thoải mái với việc tiếp thị. [đã chỉnh sửa, do đó sau câu trả lời của okw]
bobince

78

Cách sử dụng Sockets trong JavaScript / HTML?

Không có cơ sở để sử dụng các ổ cắm có mục đích chung trong JS hoặc HTML. Nó sẽ là một thảm họa an ninh, đối với một người.

Có WebSocket trong HTML5. Phía khách hàng khá tầm thường:

socket= new WebSocket('ws://www.example.com:8000/somesocket');
socket.onopen= function() {
    socket.send('hello');
};
socket.onmessage= function(s) {
    alert('got reply '+s);
};

Bạn sẽ cần một ứng dụng ổ cắm chuyên dụng ở phía máy chủ để nhận các kết nối và làm gì đó với chúng; nó không phải là điều bạn thường làm từ giao diện tập lệnh của máy chủ web. Tuy nhiên nó là một giao thức tương đối đơn giản ; Điểm cuối dựa trên Python SocketServer của tôi chỉ là một vài trang mã.

Trong mọi trường hợp, nó vẫn chưa thực sự tồn tại. Cả thông số kỹ thuật phía JavaScript và thông số kỹ thuật truyền tải mạng đều không được xác định và không có trình duyệt nào hỗ trợ nó.

Tuy nhiên, bạn có thể sử dụng Flash nếu có sẵn để cung cấp dự phòng cho tập lệnh của bạn cho đến khi WebSocket được phổ biến rộng rãi. Web-socket-js của Gimite là một ví dụ miễn phí về điều đó. Tuy nhiên, bạn phải chịu những hạn chế tương tự như Flash Sockets, đó là máy chủ của bạn phải có khả năng đưa ra chính sách tên miền chéo theo yêu cầu đối với cổng socket và bạn thường sẽ gặp khó khăn với proxy / tường lửa. (Các ổ cắm Flash được tạo trực tiếp; đối với những người không có quyền truy cập IP công cộng trực tiếp, người chỉ có thể ra khỏi mạng thông qua proxy HTTP, chúng sẽ không hoạt động.)

Trừ khi bạn thực sự cần giao tiếp hai chiều có độ trễ thấp, bạn nên gắn bó với XMLHttpRequestnó ngay từ bây giờ.


Html5 sẽ hỗ trợ những loại ràng buộc WS nào?
Rella

Nếu bạn muốn nói rằng các đối tượng WebSocket sẽ trông như thế nào trong trình duyệt, nó vẫn còn được nhìn thấy, nhưng thông số kỹ thuật ( w3.org/TR/websockets ) gần đây không thay đổi nhiều. Nếu theo WS Bindings bạn đang nói về Dịch vụ Web, thì không có: WebSocket sẽ không nói về SOAP hoặc bất kỳ giao thức nào khác đã có từ trước.
bobince

1
Bạn nói "Không có cơ sở nào để sử dụng các ổ cắm đa năng trong JS hoặc HTML. Đó sẽ là một thảm họa bảo mật, đối với một ổ cắm." nhưng còn phonegap hoặc các ứng dụng liên quan đến phonegap? HTML + js không chỉ cần thiết cho các trình duyệt độc lập.
obayhan

46

Tôi nghĩ điều quan trọng cần đề cập là bây giờ câu hỏi này đã hơn 1 năm tuổi, Socket.IO đã xuất hiện và dường như là cách chính để làm việc với các socket trong trình duyệt bây giờ; nó cũng tương thích với Node.js theo như tôi biết.


13
ĐỒNG Ý. Đã gần 6 năm. Các tiêu chuẩn có thay đổi không?
Aaron Esau
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.