WebSocketを試す(クライアント編)
以下のURLを参考にチャットサービスを作りました
ほとんどコピーなのですが。。^^;
有用な情報に感謝!
http://blog.livedoor.jp/kotesaki/archives/1355651.html
ただ、日本語が通らない。。><;
とりあえず日本語以外では動くことは確認できました。
1 2 |
<blockquote> <p>from mod_pywebsocket import msgutil</p><p>import thread<br /> |
import getopt
import os
import sys
import time
import datetime
import codecs
_GOODBYE_MESSAGE = ‘Goodbye’
file = ‘/somewhere/test’
class tail():
last_mtime = None
def init(self, filename, delay, sock):
self.filename = filename
self.delay = delay
self.sock = sock
def run(self):
while True:
time.sleep(self.delay)
stat = os.stat(self.filename)
if stat.st_mtime != self.last_mtime:
self.last_mtime = stat.st_mtime
self.read()
def read(self):
try:
length = 0
f = open(self.filename, ‘r’)
for line in f:
length += 1
f.seek(0)
cnt = 0
for line in f:
cnt += 1
if cnt == length:
msgutil.send_message(self.sock, line[:-1])
f.close
except Exception:
if(f):
f.close
def web_socket_do_extra_handshake(request):
pass # Always accept.
def web_socket_transfer_data(request):
attr = ()
thread.start_new_thread(tail(file, 0.5, request).run, attr)
while True:
try:
#line = request.ws_stream.receive_message()
line = msgutil.receive_message(request)
if isinstance(line, unicode):
d = datetime.datetime.today()
line = line + ‘ [’ + d.strftime(‘%Y-%m-%d %H:%M:%S’) + ‘] \r\n’
print(“okok -> ” + line)
f = open(file, ‘a’)
f.write(line)
os.fsync(f.fileno())
f.flush()
f.close
if line == _GOODBYE_MESSAGE:
return
except Exception:
return
1
|
</blockquote> |
あとはクライアントHTMLも準備。
1 2 |
<blockquote> <p><br /> |
サンプル
※実験中のため、日本語は使えません…
message…
user
1
|
</blockquote> |
何とか動きました。
面白いなぁ。これ。
moremagic
2013-02-09