イベントをストリーミングする CGI スクリプトがあります。
#!/usr/bin/python
...
print 'Content-Type: text/event-stream\n'
while (True):
delay()
print 'event: item'
print 'data: ' + get_random_event()
print ''
コマンド ラインから、ランダムな間隔 (数秒ごと) でランダムなイベントを送信します。
ただし、次の JavaScript があります。
var source = new EventSource('feed.cgi');
source.addEventListener('message', function(current_event)
{
alert(current_event.data);
}, false);
これは私に警告を発したことはありません。Chrome JavaScript コンソールにエラーはありませんが、これまでのところ、サーバー スクリプトをリッスンしているコードがイベントを受け取ったことを識別できる認識を得たことはありません。
これらを入手する方法についての提案はありますか?
- 編集 -
おそらく最初の CGI スクリプトを完成させるべきです。FireFox は、「Firefox は http://[deleted]/feed.cgi でサーバーへの接続を確立できません」と表示します。しかし、兄弟ディレクトリにあるCGIスクリプトを通常どおり実行できます.Apacheの最も細かいディレクトリ設定は、両方の親であり、.cgi拡張子を持つスクリプトをCGIとして実行できるようにするためのディレクトリにあります. また、スクリプトはモード 0755 に設定されています。
動作のインクリメントの後にファイル フラッシュを追加しても、スクリプトの受信は変わらないようです。
#!/usr/bin/python
import random
import sys
import time
timescale = 5
names = [
'Adam',
'Bob',
'Carol',
'David',
'Eddie',
'Frank',
'George',
'Harry',
'Ike',
'Jim',
'Kenny',
'Larry',
'Mary',
'Nancy',
'Oliver',
'Peter',
'Quincy',
'Roger',
'Sam',
'Thomas',
'Uncle',
'Vincent',
'William',
'Xavier',
'Yogi',
'Zachary',
]
notifications = [
'applied for a position at ACME.',
'went to an interview at ACME.',
'accepted an offer from ACME.',
]
def delay():
time.sleep((random.random() + random.random()) * timescale)
def get_random_event():
result = '<div class="activity"><span class="name">'
result += random.choice(names)
result += '</span> '
result += random.choice(notifications)
result += '</div>'
return result
print 'Content-Type: text/event-stream\n'
while (True):
print 'event: item'
print 'data: ' + get_random_event()
print ''
sys.stderr.flush()
delay()