万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

README.mdの罠

git pushできなくてハマった。
「README.md」を今回作ってしまったので、一度pullしないといけないようだ

git pull origin master

このあとだとOKだった。

Tornadoメモ

RequestHandlerのfinishメソッド
接続を閉じる

Tornadoのon_open

https://groups.google.com/group/python-tornado/browse_thread/thread/af89195f90251d54

・88ページ(Introduction To Tornado)

   class EchoHandler(tornado.websocket.WebSocketHandler):
       def on_open(self):
           self.write_message('connected!')

       def on_message(self, message):
           self.write_message(message)

on_open」と「open」があるけど、実際は「open」があるが「on_open」はないみたい。

このsockjs-tornadoにはフェイクでつけてる。一貫性のためらしい。
https://github.com/MrJoes/sockjs-tornado/blob/master/examples/test/test.py

JSでは、onopenとonmessageのアンダースコアがないメソッド名。

Introduction To Tornado著者に問い合わせてみる
http://www.doryexmachina.com/

Tornadoの簡単なWebSockeの例

例::: Shadow Logs ::
Izhar Firdaus氏がサンプル公開している

準備
・8888ポートでつなぐよ。
jQueryは必須。

JS自体は「mini.js」にし、

↓htmlにはこのように書いた。
・mini.html

<html>
    <head>
        <meta charset="utf-8">
        <title>enchant</title>
        <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
        <script type="text/javascript" src="mini.js"></script>
    </head>
    <body>
    </body>
</html>

JavaScript上にはonmessage関数があるのに、Pythonコード上のClientSocketクラスにon_messageメソッドとかがないな。

Pythonコードのdataは、Ajaxで行なっている"data"ではないようだ。


・注意
WindowsSafari Version 5.1.7(7354.57.2)、MacSafari Version 5.1.6 (7534.56.5)
だと以下のエラーが出た。

Unexpected response code: 426

Windows版Chrome19.0.1084.46なら動いた
Mac版ChromeVersion 19.0.1084.46は動いたが、
XMLHttpRequest cannot load http://localhost:8888/push?x=1&y=3. Origin null is not allowed by Access-Control-Allow-Origin.」
って変なエラー。ローカルにアクセスしてるらしい。

とりあえず、Izhar Firdaus氏のサンプルをベースに自分なりにいじったのを
https://github.com/shinriyo/websocket_mini_tornado
においた。

■使い方
1. mini.htmlを普通に開く


2. 別のブラウザとかでmini.html開く
以下のアドレスにアクセスした時にdataのパラメータの値がつまれる。

http://localhost:8888/push?data=somedatahere



3.「1.」で開いたブラウザでボタン押す
JSの↓の部分が出現した。

 $('body').append('<div>' + event.data + '</div>');