Changeset 34

Show
Ignore:
Timestamp:
02/06/08 16:30:58 (4 years ago)
Author:
mike
Message:

cometd

Files:
2 added
2 modified

Legend:

Unmodified
Added
Removed
  • tabled.py

    r33 r34  
    66import protocol 
    77import getopt 
    8 import cjson 
     8#import cjson 
    99import simplejson 
    1010from twisted.internet.protocol import Factory 
     
    1212from twisted.protocols.basic import NetstringReceiver 
    1313from twisted.internet import defer 
    14 from nevow               import rend 
    15 from nevow               import appserver 
    16 from nevow.inevow import IRequest 
    17  
    18 from twisted.application import internet, service 
     14from twisted.application import internet, service, strports 
     15from twisted.web2 import http, resource, channel, stream, server, static, http_headers, responsecode 
     16import cometd 
    1917 
    2018 
     
    3735        pass 
    3836 
    39     def dataRecieved(self,line): 
    40         try: 
    41             decoded = decodejson(line) 
    42             if decoded == None or "method" not in decoded: 
    43                 self.sendMessageViaTransport( encodejson( 
    44                     protocol.MakeError(101,"Messages must contain methods")) ) 
     37    def dataRecieved(self,data): 
     38 
     39        if data == None or "method" not in data: 
     40            self.sendMessageViaTransport(  
     41                protocol.MakeError(101,"Messages must contain methods")) 
     42            return 
     43        else: method = data["method"] 
     44        if method == "connect": 
     45            if self.table or self.id: 
     46                self.sendMessageViaTransport(  
     47                    protocol.MakeError(103,"Already connected")) 
    4548                return 
    46             else: method = decoded["method"] 
    47             if method == "connect": 
    48                 if self.table or self.id: 
    49                     self.sendMessageViaTransport( encodejson( 
    50                         protocol.MakeError(103,"Already connected")) ) 
    51                     return 
    52                 table_name = decoded["table_name"] 
    53  
    54                 if not table_name in tables: 
    55                     tables[table_name]=holdemtable(table_name) 
    56  
    57                 self.table = tables[table_name] 
    58                 if self.table.isFull(): 
    59                     self.sendMessageViaTransport( encodejson( 
    60                         protocol.MakeError(104,"Table is full"))) 
    61                     return 
    62                 else: 
    63                     self.id = decoded['client_id'] 
    64                     d = defer.Deferred() 
    65                     d.addCallback(self.sendMessage) 
    66                     self.table.addPlayer(decoded, d) 
    67             elif method == "action": 
    68                 value =  decoded["value"] 
    69                 if value == "null": value = None 
    70                 if value != None: value = float(value) 
    71                 self.table.action(self.id, decoded["action"],value) 
     49            table_name = data["table_name"] 
     50 
     51            if not table_name in tables: 
     52                tables[table_name]=holdemtable(table_name) 
     53 
     54            self.table = tables[table_name] 
     55            if self.table.isFull(): 
     56                self.sendMessageViaTransport( 
     57                        protocol.MakeError(104,"Table is full")) 
     58                return 
    7259            else: 
    73                 self.sendMessageViaTransport( encodejson(protocol.MakeError(102,"Unknown Method")) ) 
    74         except cjson.DecodeError: 
    75             self.sendMessageViaTransport( encodejson(protocol.MakeError( 100, "Message must be in JSON")) ) 
    76             print line 
    77             return 
    78          
    79         print self.id 
    80          
     60                self.id = data['client_id'] 
     61                d = defer.Deferred() 
     62                d.addCallback(self.sendMessage) 
     63                self.table.addPlayer(data, d) 
     64        elif method == "action": 
     65            value =  data["value"] 
     66            if value == "null": value = None 
     67            if value != None: value = float(value) 
     68            self.table.action(self.id, data["action"],value) 
     69        else: 
     70            self.sendMessageViaTransport( protocol.MakeError(102,"Unknown Method"))  
    8171 
    8272class PokerTableProtocol(NetstringReceiver,BasePokerTableHandler): 
     
    8676         
    8777 
    88     def stringReceived(self, line): 
    89         self.dataRecieved(line) 
     78    def stringReceived(self, data): 
     79        self.dataRecieved(decodejson(data)) 
    9080         
    9181    def connectionLost(self, reason): 
    9282        pass 
    9383 
    94  
     84clientChannels = [ r"\/poker" ] 
     85 
     86class WebClient(cometd.Client,BasePokerTableHandler): 
     87 
     88    def messageReceived(self,message): 
     89        self.dataRecieved(message) 
     90 
     91    def sendMessageViaTransport(self,data): 
     92        self.sendMessage(data) 
     93 
     94 
     95 
     96 
     97 
     98""" 
    9599def makeToken( id, table ): 
    96100    #TODO make this a bit more secure 
     
    172176        return handler.doRenderStuff(nargs) 
    173177 
     178""" 
     179 
    174180 
    175181port = 8007#int(sys.argv[1]) 
     
    179185factory.protocol = PokerTableProtocol 
    180186 
    181 site = appserver.NevowSite( PokerTableWebProtocoll() ) 
     187comet = cometd.cometd() 
     188 
     189site = server.Site(comet) 
     190application = service.Application("cometd") 
     191 
    182192myService = service.MultiService() 
    183193internet.TCPServer(port, factory).setServiceParent(myService) 
    184 internet.TCPServer(port2, site).setServiceParent(myService) 
     194internet.TCPServer(port2, channel.HTTPFactory(site)).setServiceParent(myService) 
    185195 
    186196application = service.Application( "dpoker" ) 
    187197 
     198 
    188199myService.setServiceParent(application) 
    189200 
  • web/client.html

    r27 r34  
    44    </head> 
    55     <script type="text/javascript" src="js/jquery-1.2.2.js"></script> 
     6     <script type="text/javascript" src="js/jquery.comet.js"></script> 
    67     <script type="text/javascript" src="js/poker-client.js"></script> 
    78    <body>