Де знаходиться клієнтська бібліотека socket.io?


76

Наскільки я бачив, немає ніяких пояснень щодо того, де ми повинні знаходити скрипт на стороні клієнта, socket.ioякщо node.jsвін не використовується як веб-сервер. Я знайшов цілий каталог файлів на стороні клієнта, але вони мені потрібні в комбінованій версії (як, наприклад, він використовується при використанні веб-серверів node.js). Будь-які ідеї?

Відповіді:


68

socket.io.js - це те, що ви збираєтеся вставити у свій клієнтський html. Щось на зразок:

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

мій скрипт знаходиться:

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

скопіюйте цей файл туди, де ви хочете, щоб його сервер обслуговував.


4
Чудово, дякую. Не вдалося зрозуміти, де в цій халепі структури каталогів був цей файл :)
Браун Шедд

4
Так, це не так логічно. Багато людей, які використовують socket.io, запитують це. Все найкраще :-)
EhevuTov

4
Дякую людино! Дивно, що про це немає інформації в документах чи зразках.
Пітер

1
github.com/LearnBoost/Socket.IO/wiki/How-do-I-serve-the-client <script src = "http: // <uri: port> /socket.io/socket.io.js"> < / script>
dVaffection

1
@dVaffection Це працює, лише якщо веб-програма та socket.io знаходяться на одному сервері та порту.
Джо Девід

171

Найкращий спосіб, який я знайшов для цього, - використовувати боуер .

bower install socket.io-client --save

та включіть у HTML вашого додатка наступне:

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

Таким чином, ви можете поводитися з частиною клієнта socket.io так само, як з будь-яким іншим керованим пакетом.


5
Це найкраще рішення, дякую! Якщо це допомагає комусь ще, мінімізований клієнт socket.io знаходиться вbower_components/socket.io-client/dist/socket.io.min.js
mikermcneil

5
bower ftw. <script src = "bower_components / socket.io-client / socket.io.js"> </script>
Коннор Ліч

Запуск завдання "bowerInstall: target" (bowerInstall) socket.io-client не було введено у ваш файл. Будь ласка, перейдіть і подивіться в "client / bower_components / socket.io-client" потрібний файл, а потім вручну включіть його у свій файл.
smk

Це вдало встановило бібліотеку, але, наскільки я можу зрозуміти, у ній немає bower.json. Мій залповий крок, який автоматично конкатенує бібліотеки bower ('main-bower-files'), це не тягне.
Дейв Седдія,

Я перевірив bower info socket.io-client, і схоже, що він був зареєстрований на bower без bower.json (тому за замовчуванням було створено в rewer bower). Ви можете або розгалужити проект, створити bower.json і зареєструвати власну версію bower. Створіть запит на витяг, що містить bower.json. Створіть випуск і перевірте, чи зможе його створити співавтор.
Matt Way

25

Я думаю, що кращим і правильним способом є завантаження його з цієї URL-адреси

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

у домені, де працює socket.io. Позитивним у цьому рішенні є те, що якщо ви оновите модуль socket.io npm, ваш клієнтський файл теж оновлюється, і вам не доведеться копіювати його кожен раз вручну.


1
Це найкраща відповідь IMO. Рекомендується використовувати включення на стороні клієнта з документації Socket.IO. Це просто пояснює, звідки це береться, разом із перевагами, згаданими @Capaj.
Фернандо Піанкастеллі

15
Це лише найкраще рішення, якщо Node.js обслуговує веб-сайт, де ви хочете, щоб з’єднання відбулося. Це справді велике "ЯКЩО".
Джо Девід

8

Я використовував bower, як пропонується у відповіді Метта Уей, і це спрацювало чудово, але тоді сама бібліотека не мала власного bower.jsonфайлу.

Це означало, що bower-main-filesплагін Gulp, який я використовую для пошуку файлів JS моїх залежностей, не тягнув socket.io, і я отримував помилку під час завантаження сторінки. Додавання заміни до мого проекту bower.jsonобійшло проблему.

Спочатку встановіть бібліотеку з bower:

bower install socket.io-client --save

Потім додайте заміну до вашого проекту bower.json:

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

6

Для всіх, хто запускає Wiredep і отримує "socket.io-client не був введений у ваш файл". помилка:

Змініть своє завдання Wiredep таким чином:

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

@kd Це вирішило, але чому це? що не відбувається за замовчуванням з socket.io-client?
Ніцанкін

Тому що вони не хочуть підтримувати бауера.
KD

2

Якщо ви використовуєте bower.json, додайте залежність socket.io-клієнта.

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

Потім запустіть bower install, щоб завантажити socket.io-client.

Потім додайте тег сценарію у свій HTML.

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

2

Я створив bower-сумісний socket.io-клієнт, який можна встановити так:

bower install sio-client --save

або для використання в розробці:

bower install sio-client --save-dev

посилання на репо


Ви випустите якісь оновлення? sockettio зараз знаходиться на версії 1.3.5. Ваш дуже повільний і незграбний з якихось причин.
якщо __name__ не має значення

Можливо, є спосіб автоматизувати оновлення версії клієнта bower?
Diogyn

0

якщо ви використовуєте https://github.com/btford/angular-socket-io, переконайтесь, що ваш index.html такий:

<!-- 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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.