python不同类函数调用_Python,从另一个类调用一个类函数

有人能帮我(noob)调用类进程中的BroadcastServerFactory中的广播函数吗

我尝试了很多方法从另一个类调用函数,但是没有解决方案import time, sys

from apscheduler.scheduler import Scheduler

import threading

import socket

from twisted.internet import reactor

from twisted.python import log

from twisted.web.server import Site

from twisted.web.static import File

from autobahn.websocket import WebSocketServerFactory, \

WebSocketServerProtocol, \

listenWS

class process(threading.Thread):

def __init__(self, buffer3):

threading.Thread.__init__(self)

self.setDaemon(True)

self.buffer3 = buffer3

def run(self):

factory.broadcast("I don't know what I'm doing!")

class BroadcastServerProtocol(WebSocketServerProtocol):

def onOpen(self):

self.factory.register(self)

def onMessage(self, msg, binary):

if not binary:

self.factory.broadcast("'%s' from %s" % (msg, self.peerstr))

def connectionLost(self, reason):

WebSocketServerProtocol.connectionLost(self, reason)

self.factory.unregister(self)

class BroadcastServerFactory(WebSocketServerFactory):

"""

Simple broadcast server broadcasting any message it receives to all

currently connected clients.

"""

def __init__(self, url, debug = False, debugCodePaths = False):

WebSocketServerFactory.__init__(self, url, debug = debug, debugCodePaths = debugCodePaths)

self.clients = []

self.tickcount = 0

self.tick()

def tick(self):

self.tickcount += 1

self.broadcast("'tick %d' from server" % self.tickcount)

reactor.callLater(1, self.tick)

def register(self, client):

if not client in self.clients:

print "registered client " + client.peerstr

self.clients.append(client)

def unregister(self, client):

if client in self.clients:

print "unregistered client " + client.peerstr

self.clients.remove(client)

def broadcast(self, msg):

print "broadcasting message '%s' .." % msg

for c in self.clients:

c.sendMessage(msg)

print "message sent to " + c.peerstr

class BroadcastPreparedServerFactory(BroadcastServerFactory):

"""

Functionally same as above, but optimized broadcast using

prepareMessage and sendPreparedMessage.

"""

def broadcast(self, msg):

print "broadcasting prepared message '%s' .." % msg

preparedMsg = self.prepareMessage(msg)

for c in self.clients:

c.sendPreparedMessage(preparedMsg)

print "prepared message sent to " + c.peerstr

def testing():

buffer2 - "hello"

myDisplay = process(buffer2)

myDisplay.start()

if __name__ == '__main__':

if len(sys.argv) > 1 and sys.argv[1] == 'debug':

log.startLogging(sys.stdout)

debug = True

else:

debug = False

level_scheduler = Scheduler()

level_scheduler.add_interval_job(testing, seconds=5)

level_scheduler.start()

#ServerFactory = BroadcastServerFactory

ServerFactory = BroadcastPreparedServerFactory

factory = ServerFactory("ws://localhost:9000",

debug = debug,

debugCodePaths = debug)

factory.protocol = BroadcastServerProtocol

factory.setProtocolOptions(allowHixie76 = True)

listenWS(factory)

webdir = File(".")

web = Site(webdir)

reactor.listenTCP(8080, web)

reactor.run()

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值