WebSocketを試す(クライアント編)
以下のURLを参考にチャットサービスを作りました
ほとんどコピーなのですが。。^^;
有用な情報に感謝!
http://blog.livedoor.jp/kotesaki/archives/1355651.html
ただ、日本語が通らない。。><;
とりあえず日本語以外では動くことは確認できました。
from mod_pywebsocket import msgutil
import thread
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 = sockdef 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 += 1f.seek(0)
cnt = 0for line in f:
cnt += 1
if cnt == length:
msgutil.send_message(self.sock, line[:-1])
f.close
except Exception:
if(f):
f.closedef 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
あとはクライアントHTMLも準備。
Sample Page
サンプル
※実験中のため、日本語は使えません...
message...
user
何とか動きました。
面白いなぁ。これ。