msgpack-Daten von der Client-Seite mit js in einer werkzeug-Umgebung Ich habe es wie folgt gesendet.
ninja.coffee
sendMsgPack:(event)=>
event.preventDefault()
arr = $('#hogehogeForm').serializeArray()
data = msgpack.pack(arr)
arrayBinary = new Uint8Array(data)
xhr = new XMLHttpRequest()
xhr.open('POST', '/api/url', true)
xhr.onreadystatechange = ()->
if xhr.readyState is 4 and xhr.status is 200
console.log xhr.responseText
else if xhr.readyState is 4 and xhr.status isnt 200
console.log xhr, "hogehoge"
xhr.setRequestHeader('Content-Type', 'application/x-msgpack; charset=x-user-defined')
xhr.send(arrayBinary.buffer)
tasukete.py
import msgpack
from shimehari import Response, ApplicationController, request
import msgpack
class FooController(ApplicationController):
def __init__(self, name):
ApplicationController.__init__(self, name)
def index(self, *args, **kwargs):
return 'hidebu'
def create(self, *args, **kwargs):
#Schauen wir uns den Header wirklich an
print msgpack.unpackb(request.data)
return Response('aaa')
$ ({'name': 'name', 'value': 'aaaaa'},)
Es scheint, dass msgpack.js eine Methode namens "msgpack.upload" hat. Die Methode ist PUT oder der Inhaltstyp des Anforderungsheaders lautet "application / x-www-form-urlencoded". Ich fühlte etwas Unermessliches, also benutzte ich vorerst die rohe XMLHttpRequest. Es ist nutzlos, da ArrayBuffer nicht mit jQuery.ajax gesendet werden kann.
Als ich den Inhaltstyp auf "x-www-form-urlencoded" setzte, hatte ich das Gefühl, dass die gesendeten Daten nicht in "Request.form" statt in "Request.data" in werkzeug gespeichert wurden. Ich habe es geschafft.
Endlich habe ich beschlossen, es tatsächlich per WebSocket zu senden. Ich habe das Gefühl, dass es viele Situationen gibt, in denen WebSocket nicht verwendet werden kann, aber wenn Sie es bequem auffrischen, wird es nützlich sein.
Ich denke, es gibt viele Orte, an die man gehen kann. Bitte lassen Sie mich wissen, wenn Sie Details haben.
Recommended Posts