मैं एक साधारण वेबसाइकिल सर्वर को लागू करने के लिए अजगर का उपयोग कर रहा हूं। मैं जिस हैंडशेक का उपयोग कर रहा हूं वह http://en.wikipedia.org/w/index.php?title=WebSockets&oldid=372387414 से आता है।वेबस्केट हैंडशेक समस्या
हाथ मिलाना ही काम करने के लिए लगता है, लेकिन जब मैं भेज हिट, मैं एक जावास्क्रिप्ट त्रुटि मिलती है:
Uncaught Error: INVALID_STATE_ERR: DOM Exception 11
यहाँ एचटीएमएल है:
<!doctype html>
<html>
<head>
<title>ws_json</title>
</head>
<body onload="handleLoad();" onunload="handleUnload();">
<input type="text" id='input' />
<input type="button" value="submit" onclick="handleSubmit()" />
<div id="display"></div>
<script type="text/javascript">
function showmsg(str){
display = document.getElementById("display");
display.innerHTML += "<p>" + str + "</p>";
}
function send(str){
ws.send(str.length);
ws.send(str);
}
function handleSubmit(){
input = document.getElementById('input');
send(input.value);
input.focus();
input.value = '';
}
function handleLoad(){
ws = new WebSocket("ws://localhost:8888/");
ws.onopen = function(){
showmsg("websocket opened.");
}
ws.onclose = function(){
showmsg("websocket closed.");
}
}
function handleUnload(){
ws.close();
}
</script>
</body>
</html>
और यहाँ अजगर कोड है:
import socket
import threading
import json
PORT = 8888
LOCATION = "localhost:8888"
def handler(s):
print " in handler "
ip, _ = s.getpeername()
print "New connection from %s" % ip
request = s.recv(1024)
print "\n%s\n" % request
print s.getpeername()
# send response
response = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"
response += "Upgrade: WebSocket\r\n"
response += "Connection: Upgrade\r\n"
try:
peername = s.getpeername()
response += "Sec-WebSocket-Origin: http://%s\r\n" % peername[0] # % request[request.index("Origin: ")+8:-4]
except ValueError:
print "Bad Request"
raise socket.error
response += "Sec-WebSocket-Location: ws://%s\r\n" % LOCATION
response += "Sec-WebSocket-Protocol: sample"
response = response.strip() + "\r\n\r\n"
print response
s.send(response)
while True:
length = s.recv(1)
print length
if not length:
break
length = int(length)
print "Length: %i" % length
data = s.recv(length)
print "Received: %s" % data
print ""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('localhost', PORT))
s.listen(5)
print "server is running..."
while True:
sock, addr = s.accept()
threading.Thread(target=handler, args=(sock,)).start()
क्या कोई जानता है कि मैं यहां क्या गलत कर रहा हूं?
मैं वेबस्केट कक्षा के बिना आपके कोड का परीक्षण नहीं कर सकता। यह कहां परिभाषित किया गया है? फ़ायरफ़ॉक्स 3.6.3 को यह नहीं पता था कि यह क्या है। – Nathan
क्रोम देव के पास है, और फ़ायरफ़ॉक्स 4 को यह माना जाता है। – lowerkey
यदि आपके पास 100 प्रतिनिधि नहीं हैं तो आपने एक बक्षीस कैसे दिया? – Nathan