2011-12-16 41 views
71

Theo như tôi đã thấy, không có giải thích nào về nơi chúng tôi định vị tập lệnh phía máy khách cho socket.io nếu node.js không được sử dụng làm máy chủ web. Tôi đã tìm thấy một thư mục toàn bộ các tệp phía máy khách, nhưng tôi cần chúng trong một phiên bản kết hợp (giống như nó được phân phát khi sử dụng các máy chủ web node.js). Bất kỳ ý tưởng?Thư viện máy khách socket.io ở đâu?

Trả lời

65

socket.io.js là những gì bạn sẽ đưa vào html phía máy khách của mình. Một cái gì đó như:

<script type="text/javascript" src="socket.io.js"></script> 

kịch bản của tôi tọa lạc:

/usr/local/lib/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js 

copy file đó vào nơi bạn muốn máy chủ của bạn để phục vụ nó.

+3

Tuyệt vời, cảm ơn. Không thể tìm ra nơi trong mớ hỗn độn của cấu trúc thư mục mà tập tin đã được :) –

+4

Vâng, nó không phải là hợp lý. Rất nhiều người sử dụng socket.io hỏi điều đó. Tất cả các tốt nhất :-) – EhevuTov

+4

Cảm ơn người đàn ông! Thật lạ khi không có thông tin về điều đó trong tài liệu hoặc mẫu. – Peter

25

Tôi nghĩ rằng cách tốt hơn và thích hợp là để tải nó từ url

src="/socket.io/socket.io.js" 

này trên miền nơi socket.io chạy. Điều tích cực trong giải pháp này là nếu bạn cập nhật mô-đun socket.io npm, tệp khách hàng của bạn cũng được cập nhật và bạn không phải sao chép nó mỗi lần thủ công.

+1

Đây là câu trả lời hay nhất IMO. Việc sử dụng phía máy khách được đề nghị bao gồm từ tài liệu Socket.IO. Nó chỉ giải thích nó đến từ đâu, cùng với những ưu điểm @Capaj đã đề cập. –

+15

Đây chỉ là giải pháp tốt nhất Node.js phục vụ trang web nơi bạn muốn kết nối xảy ra. Đó là một 'NẾU' thực sự lớn. –

169

Cách tốt nhất tôi đã tìm thấy để thực hiện việc này là sử dụng bower.

bower install socket.io-client --save 

và bao gồm trong mã HTML của ứng dụng của bạn:

<script src="/bower_components/socket.io-client/socket.io.js"></script> 

Bằng cách đó bạn có thể điều trị các phần socket.io của khách hàng của bạn giống như cách bạn đối xử với bất kỳ gói quản lý khác.

+5

Đây là giải pháp tốt nhất, cảm ơn! Trong trường hợp điều này giúp bất kỳ ai khác, trình khách socket.io được rút gọn nằm trong 'bower_components/socket.io-client/dist/socket.io.min.js' – mikermcneil

+5

bower ftw.

+0

Thao tác "bowerInstall: target" (bowerInstall) socket.io-client không được đưa vào tệp của bạn. Hãy xem qua "client/bower_components/socket.io-client" cho tệp bạn cần, sau đó bao gồm nó theo cách thủ công trong tệp của bạn. – smk

2

Nếu bạn đang sử dụng bower.json, hãy thêm phụ thuộc socket.io-client.

"socket.io-client": "0.9.x" 

Sau đó chạy Chòi chơi cho cài đặt tải socket.io-client.

Sau đó, thêm thẻ tập lệnh vào HTML của bạn.

<script src="bower_components/socket.io-client/dist/socket.io.min.js"></script> 
6

Đối với tất cả những người chạy wiredep và tải "socket.io-client chưa được chèn vào tệp của bạn". lỗi:

Sửa đổi nhiệm vụ wiredep của bạn như thế này:

wiredep: { 
    .. 
    main: { 
    .. 
    overrides: { 
     'socket.io-client': { 
     main: 'socket.io.js' 
     } 
    } 
    } 
+0

@ k-d Điều này giải quyết nó, nhưng tại sao vậy? những gì không xảy ra theo mặc định với 'socket.io-client'? – Nitzankin

+0

Bởi vì họ không muốn hỗ trợ bower. –

2

tôi đã tạo ra một Chòi chơi cho ổ cắm tương thích.io-client có thể được cài đặt như thế này:

bower install sio-client --save 

hoặc để sử dụng phát triển:

bower install sio-client --save-dev 

liên kết đến repo

+0

Bạn có phát hành bất kỳ cập nhật nào không? socketio hiện có trên 1.3.5. Của bạn là rất chậm và clunky vì lý do nào. –

+0

được cập nhật thành 1.3.5 –

+0

Có thể có cách tự động cập nhật phiên bản máy khách bower? – Diogyn

8

tôi đã sử dụng Chòi chơi như đề xuất trong Câu trả lời của Matt Way, và điều đó rất hiệu quả, nhưng sau đó là thư viện của nó f không có tệp bower.json riêng.

Điều này có nghĩa là plugin Gulp bower-main-files mà tôi đang sử dụng để tìm các tệp JS phụ thuộc của tôi không được lấy trong socket.io và tôi gặp phải lỗi khi tải trang. Thêm ghi đè vào dự án của tôi là bower.json làm việc xung quanh vấn đề.

Đầu tiên cài đặt các thư viện với Chòi chơi:

bower install socket.io-client --save 

Sau đó, thêm ghi đè để bower.json của dự án của bạn:

"overrides": { 
    "socket.io-client": { 
    "main": ["socket.io.js"] 
    } 
} 
0

nếu bạn sử dụng https://github.com/btford/angular-socket-io hãy chắc chắn để có index.html của bạn như này:

<!-- https://raw.githubusercontent.com/socketio/socket.io-client/master/socket.io.js --> 
<script src="socket.io.js"></script> 

<!-- build:js({client,node_modules}) app/vendor.js --> 
<!-- bower:js --> 
<script src="bower_components/jquery/dist/jquery.js"></script> 
<script src="bower_components/angular/angular.js"></script> 
<!-- ...... --> 
<script src="bower_components/angular-socket-io/socket.js"></script> 
<!-- endbower --> 
<!-- endbuild --> 



<script type="text/javascript" charset="utf-8"> 
    angular.module('myapp', [ 
// ...  
'btford.socket-io' 
]); 

// do your angular/socket stuff 
</script> 
Các vấn đề liên quan