python之WebSocket的开发

本文介绍了如何使用Python进行WebSocket开发,通过示例代码websocket.py,展示了如何创建WebSocket服务器,并提供了客户端访问地址:http://localhost:8080/client.html。
摘要由CSDN通过智能技术生成

## websocket.py

import socket
import struct
import hashlib,base64
import threading,random
#线程,套接字,哈希表,随机数

#存放链接客户fd,元组
connectionlist = {}

#发送指定的消息
def sendMessage(message):
	#对全局变量的引用
	global connectionlist
	#向客户端集合中每个成员发送消息
	# %:字符串合成
	# ,:字符串叠加
	for connection in connectionlist.values():
		connection.send("\x00%s\xFF" % message)

#删除连接,从集合中删除连接对象item(建立一个连接追加到连接中)
def deleteconnection(item):
	global connectionlist
	del connectionlist['connection'+item]

#定义WebSocket对象(基于线程对象)
class WebSocket(threading.Thread):
	#
	def __init__(self,conn,index,name,remote, path="/"):
		#初始化线程
		threading.Thread.__init__(self)
		#初始化数据,全部存储到自己的数据结构中self
		self.conn = conn
		self.index = index
		self.name = name
		self.remote = remote
		self.path = path
		self.buffer = ""
	
	#运行线程
	def run(self):
		#Log输出,套接字index启动
		print 'Socket%s Start!' % self.index
		headers = {}
		#Socket是否握手的标志,初始化为false.
		self.handshaken = False
		#循环执行如下逻辑
		while True:
			#如果没有进行握手
			if self.handshaken == False:
				#Log输出,Socket x开始与远程客户y进行握手过程
				print 'Socket%s Start Handshaken with %s!' % (self.index,self.remote)
				#从客户端接受1kb数据,存放到buffer中
				self.buffer += self.conn.recv(1024)
				#如果接受数据中有\r\n\r\n的标志
				if self.buffer.find('\r\n\r\n') != -1:
					#按照这种标志分割一次,结果为:header data(网页的解析)
					#再对header 和 data部分进行单独的解析
					header, data = self.buffer.split('\r\n\r\n', 1)
					#对header进行分割后,取出后面的n-1个部分
					for line in header.split("\r\n")[1:]:
						#逐
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值