Статьи

Slicehost, Node.js и WebSockets

Я искал небольшого хостинг-провайдера, на котором я мог бы запустить node.js, чтобы проверить некоторые эксперименты с WebSocket, и это мой аккаунт, чтобы вы тоже могли поиграть.

Я должен добавить, прежде чем я продолжу, что это не сложно, если вы знаете, что делаете (а я сам был на 80% от этого) согласно:

@rem с момента вашего последнего твита (примерно 20 минут) я купил фрагмент Slicehost за 20 $ и запустил на нем пример сервера #nodejs.

Slicehost

Я попробовал Rackspace Cloud за 11 долларов в месяц, чтобы начать с него, но после завершения регистрации мне сказали, что нужно позвонить мне, чтобы завершить проверку. Меня не было дома, поэтому мне не позвонили. Кроме того, с тех пор, как я переехал, мой банковский счет в данный момент находится в странном состоянии. Достаточно сказать, что учетная запись никогда не была завершена, и я не мог получить доступ к серверу. Поэтому я быстро отменил и посмотрел на регистрацию в Slicehost.

Регистрация Slicehost была очень легкой — я начал с самого маленького варианта. Одна форма для заполнения и сервер был в рабочем состоянии. Удивительно легко. Они предварительно выбрали для меня дистрибутив «Ubuntu 8.04.2 LTS (hardy)», который, если бы меня попросили выбрать один из дистрибутивов, я бы даже не догадывался, что будет хорошей отправной точкой в ​​противном случае: 8, 9, 10? Кто знает, я просто хотел начать. Отлично.

Сразу мой сервер был запущен. Я попал в один блок безопасности, который вы вряд ли попадете, потому что я регистрировался из Великобритании, но получал доступ из Швейцарии (так как я все еще был в отпуске), но служба поддержки уведомила меня о проблеме безопасности (которая заблокировала мой сервер). ) и буквально все было отсортировано и решено в течение 10 минут. Я от всей души благодарю их поддержку за скорость и личный контакт, с которым они разбирались.

Итак, готовимся. Мне нужно следующее:

  1. Мой собственный аккаунт, а не root
  2. Git (чтобы я мог клонировать репозитории)
  3. Node.js (и, следовательно, также компиляторы c ++ и т. Д.)
  4. Сервер WebSocket

Настройка сервера Ubuntu

Slicehost имеет превосходную вики с инструкциями здесь:

Начало работы с новым ломтиком Ubuntu

Я следовал инструкциям вплоть до «прокачки твоего приглашения» (так как у меня есть собственный яд). Это было сделано пользователем конфигурации, и теперь я мог sudo и root был заблокирован.

Установка Git

Git был прост, хотя я немного обошел дома. Просто беги:

sudo apt-get install git-core

Теперь Git был установлен.

Установка компиляторов и Node.js

Получение узла было простым, так как все, что мне нужно было сделать, это клонировать репозиторий:

git clone git://github.com/ry/node.git

На самом деле проблема заключалась в построении Node — я не устанавливал компиляторы, c ++, cc, gcc и т. Д. Используя комбинацию подходов hit и miss и shotgun, это было также просто:

sudo aptitude install build-essential -y

Это дало мне все компиляторы, поэтому я смог построить.

Теперь я собираюсь ускорить мой опыт и вместо того, чтобы объезжать дома, просто скажу, что вы хотите стабильную сборку, а не последнюю. WebSockets не работает должным образом с последней сборкой 0.1.28, а стабильная сборка — 0.1.26. Так что вам нужно переключить ветки (из каталога узла ):

git checkout origin/stable

Теперь вы готовы строить. На самом деле мне пришлось много потрудиться, чтобы понять, что я не был в стабильной версии, так что считайте это одолжением! 🙂 Теперь мы готовы к сборке:

./configure
make
sudo make install

Следующая остановка, давайте запустим сервер WebSocket

WebSocket Server

Я лично хотел поиграть с потоковым API-интерфейсом , для этого есть возможность сделать git-репо!

Я создал веб- каталог в своем домашнем каталоге, чтобы я мог запустить свои эксперименты, оттуда я запускаю:

git clone git://github.com/andregoncalves/twitter-nodejs-websocket.git

Оттуда я скинул сервер (по умолчанию он слушает «iphone»):

cd twitter-nodejs-websocket
node server
.js <username> <password>

Теперь на моем другом «обычном» сервере (хотя гладкость slicehost, я сейчас думаю о портировании на все мои сайты) размещается простая веб-страница (из примера в git repo), которая транслирует последние твиты, найденные сервером и должен просматриваться в браузере с поддержкой WebSocket, например, Google Chrome (dev channel) или Webkit ночью: http://rem.im/relay-tweets.html (обратите внимание, что я пока запусту эту демонстрацию, но это вполне может быть снят в будущем). Вот снимок экрана на случай, если я выключу его и продолжу:

основной код для запуска сокета просто такой:

ws = new WebSocket("ws://<host>:8080/");

ws.onmessage = function(event) {
var data = JSON.parse(event.data);
var $p = $(twitterlib.render(data)); // uses Twitterlib.js
if ($('#tweets > li').length > 15) {
$('#tweets >li:last').slideDown(100, function () {
$(this).remove();
});
}

$('#tweets').prepend($p);
$p.slideDown(140);
};

ws.onclose = function() {
alert("socket closed");
};

Без сомнения, я опубликую статью на HTML5 Doctor о WebSockets и напишу об этом в грядущем выпуске HTML5, который я пишу с Брюсом Лоусоном .