■pywebsocket単体で動作させる
draft75
vi /home/pywebsocket-0.5.2/src/mod_pywebsocket/standalone.py
以下の部分を
parser.add_option('--allow-draft75', dest='allow_draft75', action='store_true', default=False, help='Allow draft 75 handshake')
以下のように変更する。
parser.add_option('--allow-draft75', dest='allow_draft75', action='store_true', default=True, help='Allow draft 75 handshake')
起動
python /home/pywebsocket-0.5.2/src/mod_pywebsocket/standalone.py -p 8800 -d /home/pywebsocket-0.5.2/src/example
WebSocketで8800ポートにアクセスする。(●´ω`●)
■apacheモジュールとして動作させる
http-devel
yum install http-devel
mod_python
wget http://archive.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz tar xvzf mod_python-3.3.1.tgz cd mod_python-3.3.1 ./configure –with-apxs=/usr/sbin/apxs –with-python=/usr/bin/python make make install
設定
vi /etc/httpd/conf.d/python.conf
以下の記述の下に
LoadModule python_module modules/mod_python.so
以下の記述を付加する。
AddHandler mod_python .py
mod_pywebsocket
wget http://pywebsocket.googlecode.com/files/mod_pywebsocket-0.5.2.tar.gz tar xvzf mod_pywebsocket-0.5.2 cd pywebsocket-0.5.2/src python setup.py build python setup.py install
設定
vi /etc/httpd/conf.d/python_mod_pywebsocket.conf
以下を記述する。
<IfModule python_module> PythonPath "sys.path+['/usr/lib/python2.4/site-packages/']" PythonOption mod_pywebsocket.handler_root /var/www/html/wsh PythonHeaderParserHandler mod_pywebsocket.headerparserhandler PythonOption mod_pywebsocket.allow_draft75 On </IfModule>
/etc/init.d/httpd restart
起動
cp /home/pywebsocket-0.5.2/src/example/echo_wsh.py /var/www/html/wsh/
WebSocketクライアントで/echoにアクセスする。(●´ω`●)
■ベンチマーク
正確性は微妙だが100クライアントからの接続でのロードアベレージは、「node : pywebsoket(standalone) : pywebsoket(apache) = 0.15 : 0.25 : 0.8」となった。最初の2つの差は微妙だったが、Apacheモジュールとして動作させた時のリソースの消費量は明らかに大きいようだ。