python服务端编程_Python WebSocket服务端编程代码完成gtalk机器人

本文python源码为实现,Python WebSocket服务端编程代码完成gtalk机器人的全部代码段。需要用到python sys、sleekxmpp、reactor等python模块及方法,在代码中导入部分可以查看到详细方法。

python websocket库,运作机制及客户端和服务端的 API 实现。Python WebSocket的具体操作方法和工作原理也可以查看相关文章来学习。

import sys

from twisted.internet import reactor

from twisted.python import log

from autobahn.websocket import WebSocketServerFactory, WebSocketServerProtocol

import sleekxmpp

reload(sys)

sys.setdefaultencoding('utf8')

class gtalkBot(sleekxmpp.ClientXMPP):

"""

A basic SleekXMPP bot that will log in, send a message,

and then log out.

"""

def __init__(self, jid, password):

sleekxmpp.ClientXMPP.__init__(self, jid, password)

self.recipient = 'wxg4net@gmail.com'

self.status_text = ''

self.add_event_handler("session_start", self.start)

self.add_event_handler("message", self.muc_message)

self.add_event_handler('presence_available',

self.handle_presence_available)

self.add_event_handler('presence_unavailable',

self.handle_presence_unavailable)

self.add_event_handler('presence_dnd',

self.handle_presence_dnd)

def start(self, event):

self.send_presence()

self.get_roster()

def handle_presence_unavailable(self, presence):

if cmp(presence['from'].bare, self.recipient) == 0:

self.status_text = presence['status']

def handle_presence_available(self, presence):

if cmp(presence['from'].bare, self.recipient) == 0:

self.status_text = presence['status']

def handle_presence_dnd(self, presence):

if cmp(presence['from'].bare, self.recipient) == 0:

self.status_text = presence['status']

def muc_message(self, msg):

fwho = msg['from'].bare

body = msg['body']

if cmp(body,'-qsbk') == 0:

self.send_message(mto=fwho,

mbody='当前服务已关闭',

mtype='chat')

elif cmp(body,'-help') == 0:

self.send_message(mto=fwho,

mbody='当前服务开发中...',

mtype='chat')

elif cmp(fwho, self.recipient) == 0:

factory.broadcast(str(body))

else:

self.send_message(mto=fwho,

mbody='当前服务开发中...',

mtype='chat')

def sendMessageTome(self, message):

self.send_message(mto="wxg4net@gmail.com",

mbody=message,

mtype='chat')

#python websocket

class BroadcastServerProtocol(WebSocketServerProtocol):

def __init__(self):

self.istip = True

self.Heartbeat()

def Heartbeat(self):

reactor.callLater(1, self.Heartbeat)

def onOpen(self):

self.factory.register(self)

def onMessage(self, msg, binary):

xmpp.sendMessageTome(msg)

if self.istip:

self.sendMessage('你好,websocket python的当前状态是:'+str(xmpp.status_text)+'。---祝你生活愉快!')

self.istip = False

def connectionLost(self, reason):

WebSocketServerProtocol.connectionLost(self, reason)

self.factory.unregister(self)

class BroadcastServerFactory(WebSocketServerFactory):

protocol = BroadcastServerProtocol

def __init__(self):

WebSocketServerFactory.__init__(self)

self.clients = []

def register(self, client):

if not client in self.clients:

self.clients.append(client)

def unregister(self, client):

if client in self.clients:

self.clients.remove(client)

def broadcast(self, message):

if self.clients:

for c in self.clients:

c.sendMessage(message)

#www.iplaypy.com

if __name__ == '__main__':

1a58

log.startLogging(sys.stdout)

xmpp = gtalkBot("phzggzs@gmail.com", "*******")

xmpp.register_plugin('xep_0030') # Service Discovery

xmpp.register_plugin('xep_0199') # XMPP Ping

if xmpp.connect():

xmpp.process(threaded=True)

factory = BroadcastServerFactory()

reactor.listenTCP(9090, factory)

reactor.run()

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/c2700.html

相关文章 Recommend

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值