<p>这对我有用:</p>
<pre><code>from autobahn.twisted.websocket import WebSocketServerProtocol, \
WebSocketServerFactory
class TweetStreamProtocol(WebSocketServerProtocol):
def sendTweets(self):
for line in open('gistfile1.txt').readlines():
## decode UTF8 encoded file
data = line.decode('utf8').split(',')
## now operate on data using Python string functions ..
## encode and send payload
payload = data[2].encode('utf8')
self.sendMessage(payload)
self.sendMessage((u"\u03C0"*10).encode("utf8"))
def onMessage(self, payload, isBinary):
if payload == "tweetme":
self.sendTweets()
if __name__ == '__main__':
import sys
from twisted.python import log
from twisted.internet import reactor
log.startLogging(sys.stdout)
factory = WebSocketServerFactory("ws://localhost:9000", debug = False)
factory.protocol = TweetStreamProtocol
reactor.listenTCP(9000, factory)
reactor.run()
</code></pre>
<p>注意事项:</p>
<ul>
<li>以上代码适用于<a href="https://pypi.python.org/pypi/autobahn" rel="nofollow">Autobahn|Python</a>0.7及以上版本</li>
<li>我不确定你的样本是否正确的UTF8编码文件</li>
<li>但是,“最后一条”伪Tweet是10x“pi”,并且在浏览器中正确显示,因此
原则上是可行的。。在</li>
</ul>
<p>另请注意:由于在这里解释的时间太长,Autobahn的<code>sendMessage</code>函数希望<code>payload</code>已经是UTF8编码的,如果<code>isBinary == False</code>。一个“普通”Python字符串是Unicode,它需要像上面那样编码成UTF8才能发送。在</p>