diff --git a/server/socketio.go b/server/socketio.go index 193f1fcf..11bdb325 100644 --- a/server/socketio.go +++ b/server/socketio.go @@ -149,7 +149,13 @@ var onMessageHandlers = map[string]func(*SocketIoServer, json.RawMessage) (inter } return }, - // sendTransaction + "\"sendTransaction\"": func(s *SocketIoServer, params json.RawMessage) (rv interface{}, err error) { + tx, err := unmarshalSendTransaction(params) + if err == nil { + rv, err = s.sendTransaction(tx) + } + return + }, } func (s *SocketIoServer) onMessage(c *gosocketio.Channel, req map[string]json.RawMessage) interface{} { @@ -602,6 +608,32 @@ func (s *SocketIoServer) getDetailedTransaction(txid string) (res resultGetDetai return } +func unmarshalSendTransaction(params []byte) (tx string, err error) { + p, err := unmarshalArray(params, 1) + if err != nil { + return + } + tx, ok := p[0].(string) + if ok { + return + } + err = errors.New("incorrect parameter") + return +} + +type resultSendTransaction struct { + Result string `json:"result"` +} + +func (s *SocketIoServer) sendTransaction(tx string) (res resultSendTransaction, err error) { + txid, err := s.chain.SendRawTransaction(tx) + if err != nil { + return res, err + } + res.Result = txid + return +} + func (s *SocketIoServer) onSubscribe(c *gosocketio.Channel, req json.RawMessage) interface{} { glog.Info(c.Id(), " onSubscribe ", req) return nil diff --git a/server/static/test.html b/server/static/test.html index 875b97fd..4ff3a6e6 100644 --- a/server/static/test.html +++ b/server/static/test.html @@ -163,6 +163,22 @@ return socket.send({ method, params }, f); } + function sendTransaction() { + var tx = document.getElementById('sendTransactionHex').value; + sendTransactionF(tx, function (result) { + console.log('sendTransaction sent successfully'); + console.log(result); + document.getElementById('sendTransactionResult').innerText = JSON.stringify(result).replace(/,/g, ", "); + }); + } + + function sendTransactionF(hex, f) { + const method = 'sendTransaction'; + const params = [ + hex, + ]; + return socket.send({ method, params }, f); + } @@ -265,6 +281,20 @@
+
+
+ +
+
+ +
+
+
+
+
+
+
+