issue python sockets: reliably posted information whatever browser?
i wrote little python+ajax programs (listed during end) dale way inspect comet visualisation asynchronous communications.
the thought grant browsers send messages genuine any others around python program.
the pretence let "get messages/..." tie uninterrupted sharp summary answer back.
my problem especially honesty i have around socket.recv...
when i post firefox, operative well.
when i post chrome ie, "data" i python empty.
does anybody know problem between browsers?
are browsers injecting eof else characters murdering receiving "recv"?
is there any fortitude famous problem?
the server.py python:
import socket
connected={}
def inrequest(text):
content=''
text[0:3]=='get':
method='get'
else:
method='post'
k=len(text)-1
while k>0 text[k]!='\n' text[k]!='\r':
k=k-1
content=text[k+1:]
text=text[text.index(' ')+1:]
url=text[:text.index(' ')]
relapse {"method":method,"url":url,"content":content}
mysocket = socket.socket ( socket.af_inet, socket.sock_stream )
mysocket.bind ( ( '', 80 ) )
mysocket.listen ( 10 )
while true:
channel, sum = mysocket.accept()
data=channel.recv(4096)
req=inrequest(data)
url=req["url"]
url=="/client.html" url=="/clientie.html":
f=open('c:\\async\\'+url)
channel.send ('http/1.1 200 ok\n\n'+f.read())
f.close()
channel.close()
elif '/messages' url:
req["method"]=='post':
target=url[10:]
aim connected:
connected[target].send("http/1.1 200 ok\n\n"+req["content"])
imitation req["content"]+" sent "+target
connected[target].close()
channel.close()
elif req["method"]=='get':
user=url[10:]
connected[user]=channel
imitation user+' connected'
the client.html html+javascript:
<html>
<head>
<script>
var user=''
duty post(el) {
(window.xmlhttprequest) {
var text=el.value;
var req=new xmlhttprequest();
el.value='';
var target=document.getelementbyid('to').value
}
else (window.activexobject) {
var text=el.content;
var req=new activexobject("microsoft.xmlhttp");
el.content='';
}
else
return;
req.open('post','messages/'+target,true)
req.send(text);
}
duty get(u) {
(user=='')
user=u.value
var req=new xmlhttprequest()
req.open('get','messages/'+user,true)
req.onload=function() {
var message=document.createelement('p');
message.innerhtml=req.responsetext;
document.getelementbyid('messages').appendchild(message);
get(user);
}
req.send(null)
}
</script>
</head>
<body>
<span>from</span>
<input id="user"/>
<input type="button" value="sign in" onclick="get(document.getelementbyid('user'))"/>
<span>to</span>
<input id="to"/>
<span>:</span>
<input id="message"/>
<input type="button" value="post" onclick="post(document.getelementbyid('message'))"/>
<div id="messages">
</div>
</body>
</html>
Comments
Post a Comment