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
python服务端编程_Python WebSocket服务端编程代码完成gtalk机器人相关推荐
- python套接字编程_Python套接字编程(1)——socket模块与套接字编程
在Python网络编程系列,我们主要学习以下内容: 5. 常见的Python异步编程框架 6. 协程在Python网络编程中的使用 本文介绍Python下的基本套接字编程,主要基于 socket 模块 ...
- python socket编程_Python学习记录-socket编程
1. OSI七层模型详解 2. Python socket 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答 ...
- python fortran混合编程_python fortran c 混合编程
背景 因为编程需要使用python和fortran(或者c,c++)混合编程,所以进行了一些资料查询和实验.首先尝试了f2py,但是这个项目已经很久没有更新,为了以后兼容性考虑(后期可能会使用到c++ ...
- python 栈实现 加减乘除_Python自学笔记,编程中简单的加减乘除
日常生活中,我们都会有过很多的加减乘数的基本运算.今天我们来看看Python这么编程语言,是怎么进行简单的基本运算的.废话不多说,我们开始吧开发工具:IDLE (Python 3.7 64-bit)这 ...
- python tkinter计算器实例_Python+tkinter使用80行代码实现一个计算器实例
Python+tkinter使用80行代码实现一个计算器实例 本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下. 闲话不说,直奔主题.建议大家跟着敲一遍代码, ...
- python控制结束多线程_python进阶八——并发编程之多线程
1:线程介绍 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合到 ...
- python极客项目编程_Python极客项目编程 ([美]Mahesh Venkitachalam) 中文pdf完整版
Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.通过Python编程,我们能够解决现实生活中的很多任务.Python极客项目编程通过14个有趣的项目,帮助和鼓励读者探索Python ...
- python概率编程_Python中的概率编程
python概率编程 Learn about probabilistic programming in this guest post by Osvaldo Martin, a researcher ...
- python多线程控制暂停_python中的多线程编程与暂停、播放音频的结合
我们都知道python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦s ...
最新文章
- Poj(2488),按照字典序深搜
- 了解select模型的六大注意点
- oracle监听管理工具,oracle监听器管理
- 发条js调试工具_【转载】移动端js调试工具:eruda
- tidyverse —— readr包
- 计算机id和密码忘了怎么办,苹果平板电脑忘了ID号和密码怎么办?
- board crt_HTML5 CSS3 朋克风格的旧式CRT显示器
- 中职计算机公开课说课稿,(完整)中职职高幼教专业手工实践《剪纸(雪花)》公开课说课稿...
- VS 2013使用ReportViewer 提示An error occurred during local report processing异常处理
- MyBatis总结 Day01
- 程序员应该掌握的选择思维模式?
- NBA篮球英语专业术语
- Linux抓包工具:tcpdump
- Scintilla MFC使用教程
- 怎样用计算机做一个电子地图,电子地图如何制作简介-20210525123653.docx-原创力文档...
- 《用两天学习光线追踪》1.项目介绍和ppm图片输出
- js获取ID的一些技巧
- Bootstarp4总节(2)
- PROTAC——靶点选择与设计 | MedChemExpress
- 位运算(转自matrix67)
热门文章
- 关于奈奎斯特稳定判据应用中的理解
- 自动驾驶2020:跨越险阻,珠峰沿途好风景
- 产品读书《深泽直人》-设计
- 工薪阶层如何用5年理出100W?绝对实用方法
- 【Leetcode】276. Paint Fence
- [渝粤教育] 西南科技大学 编译原理与技术 在线考试复习资料2021版
- 职业选择测试发型软件,几款职业范发型,总有你喜欢的
- 《初窥“思维导图”》
- 软件测试中的需求管理及评审,软件测试需求管理办法
- PACS/RIS影像管理系统源码,采用VC++编程语言,提供三维图像后处理和算法