forked from cerc-io/plugeth
Added whisper messages
* have identity & get messages
This commit is contained in:
parent
c03d403437
commit
af927ffdaf
@ -12,10 +12,20 @@
|
|||||||
<button onclick="test()">Send</button>
|
<button onclick="test()">Send</button>
|
||||||
|
|
||||||
<table width="100%" id="table">
|
<table width="100%" id="table">
|
||||||
|
<tr>
|
||||||
|
<td>Count</td>
|
||||||
|
<td id="count"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>ID</td>
|
<td>ID</td>
|
||||||
<td id="id"></td>
|
<td id="id"></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>Has identity</td>
|
||||||
|
<td id="known"></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
@ -27,13 +37,21 @@
|
|||||||
|
|
||||||
var id = shh.newIdentity();
|
var id = shh.newIdentity();
|
||||||
document.querySelector("#id").innerHTML = id;
|
document.querySelector("#id").innerHTML = id;
|
||||||
|
document.querySelector("#known").innerHTML = shh.haveIdentity(id);
|
||||||
|
|
||||||
shh.watch({topics: ["test"]}).arrived(function(message) {
|
var watch = shh.watch({topics: ["test"]})
|
||||||
|
watch.arrived(function(message) {
|
||||||
document.querySelector("#table").innerHTML += "<tr><td colspan='2'>"+JSON.stringify(message)+"</td></tr>";
|
document.querySelector("#table").innerHTML += "<tr><td colspan='2'>"+JSON.stringify(message)+"</td></tr>";
|
||||||
});
|
});
|
||||||
|
|
||||||
function test() {
|
function test() {
|
||||||
shh.post({topics: ["test"], payload: web3.fromAscii("test it")})
|
shh.post({topics: ["test"], payload: web3.fromAscii("test it")});
|
||||||
|
count();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function count() {
|
||||||
|
document.querySelector("#count").innerHTML = watch.messages().length;
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -287,7 +287,7 @@ func (req *RpcRequest) ToWhisperFilterArgs() (*xeth.Options, error) {
|
|||||||
return &args, nil
|
return &args, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (req *RpcRequest) ToWhisperChangedArgs() (int, error) {
|
func (req *RpcRequest) ToWhisperIdArgs() (int, error) {
|
||||||
if len(req.Params) < 1 {
|
if len(req.Params) < 1 {
|
||||||
return 0, NewErrorResponse(ErrorArguments)
|
return 0, NewErrorResponse(ErrorArguments)
|
||||||
}
|
}
|
||||||
@ -314,3 +314,17 @@ func (req *RpcRequest) ToWhisperPostArgs() (*WhisperMessageArgs, error) {
|
|||||||
rpclogger.DebugDetailf("%T %v", args, args)
|
rpclogger.DebugDetailf("%T %v", args, args)
|
||||||
return &args, nil
|
return &args, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (req *RpcRequest) ToWhisperHasIdentityArgs() (string, error) {
|
||||||
|
if len(req.Params) < 1 {
|
||||||
|
return "", NewErrorResponse(ErrorArguments)
|
||||||
|
}
|
||||||
|
|
||||||
|
var args string
|
||||||
|
err := json.Unmarshal(req.Params[0], &args)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
rpclogger.DebugDetailf("%T %v", args, args)
|
||||||
|
return args, nil
|
||||||
|
}
|
||||||
|
@ -299,6 +299,16 @@ func (p *EthereumApi) WhisperPost(args *WhisperMessageArgs, reply *interface{})
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *EthereumApi) HasWhisperIdentity(args string, reply *interface{}) error {
|
||||||
|
*reply = p.xeth.Whisper().HasIdentity(args)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *EthereumApi) WhisperMessages(id int, reply *interface{}) error {
|
||||||
|
*reply = p.xeth.Whisper().Messages(id)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error {
|
func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error {
|
||||||
// Spec at https://github.com/ethereum/wiki/wiki/Generic-ON-RPC
|
// Spec at https://github.com/ethereum/wiki/wiki/Generic-ON-RPC
|
||||||
rpclogger.DebugDetailf("%T %s", req.Params, req.Params)
|
rpclogger.DebugDetailf("%T %s", req.Params, req.Params)
|
||||||
@ -405,7 +415,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
|
|||||||
}
|
}
|
||||||
return p.NewWhisperFilter(args, reply)
|
return p.NewWhisperFilter(args, reply)
|
||||||
case "shh_changed":
|
case "shh_changed":
|
||||||
args, err := req.ToWhisperChangedArgs()
|
args, err := req.ToWhisperIdArgs()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -413,9 +423,21 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
|
|||||||
case "shh_post":
|
case "shh_post":
|
||||||
args, err := req.ToWhisperPostArgs()
|
args, err := req.ToWhisperPostArgs()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return err
|
||||||
}
|
}
|
||||||
return p.WhisperPost(args, reply)
|
return p.WhisperPost(args, reply)
|
||||||
|
case "shh_haveIdentity":
|
||||||
|
args, err := req.ToWhisperHasIdentityArgs()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return p.HasWhisperIdentity(args, reply)
|
||||||
|
case "shh_getMessages":
|
||||||
|
args, err := req.ToWhisperIdArgs()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return p.WhisperMessages(args, reply)
|
||||||
default:
|
default:
|
||||||
return NewErrorResponse(fmt.Sprintf("%v %s", ErrorNotImplemented, req.Method))
|
return NewErrorResponse(fmt.Sprintf("%v %s", ErrorNotImplemented, req.Method))
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user