Comments (7)
Sorry, @mkozjak it does not seems so. What am I missing?
here is a test code:
var WebSocket = require('rpc-websockets').Client
var WebSocketServer = require('rpc-websockets').Server
const initServer = ()=>{
var server = new WebSocketServer({
port: 8080,
host: 'localhost'
})
// register an RPC method
server.register('sum', function(params) {
console.log('XXX', 'public method call', 'sum', params)
return params[0] + params[1]
})
// ...and maybe a protected one also
server.register('account', function() {
console.log('XXX', 'protected method call', 'account')
return ['confi1', 'confi2']
}).protected()
server.setAuth(()=>true);
return server;
}
const initClient = async ()=>{
var ws = new WebSocket('ws://localhost:8080');
return new Promise((resolve, reject)=>{
ws.on('open', ()=>{
resolve(ws);
});
ws.on('error', error=>reject(error));
});
}
const main = async ()=>{
try {
const server = initServer();
console.log('XXX', 'server initialized');
const ws1 = await initClient();
console.log('XXX', 'client1 initialized');
const ws2 = await initClient();
console.log('XXX', 'client2 initialized');
try {
const result = await ws1.call('account');
console.log('XXX', 'client 1', 'call for account before login succesfull', result);
} catch(error){
console.log('XXX', 'client 1', 'call for account before login failed', error);
}
try {
const result = await ws2.call('account');
console.log('XXX', 'client 2', 'call for account before login succesfull', result);
} catch(error){
console.log('XXX', 'client 2', 'call for account before login failed', error);
}
await ws1.login({'username': 'confi1', 'password':'foobar'});
try {
const result = await ws1.call('account');
console.log('XXX', 'client 1', 'call for account after client 1 login succesfull', result);
} catch(error){
console.log('XXX', 'client 1', 'call for account after client 1 login failed', error);
}
try {
const result = await ws2.call('account');
console.log('XXX', 'client 2', 'call for account after client 1 login succesfull', result);
} catch(error){
console.log('XXX', 'client 2', 'call for account after client 1 login failed', error);
}
}
catch(error){
console.log('global error occurred', error);
}
}
main();
and here is the output:
XX server initialized
XXX client1 initialized
XXX client2 initialized
XXX client 1 call for account before login failed { code: -32605, message: 'Method forbidden' }
XXX client 2 call for account before login failed { code: -32605, message: 'Method forbidden' }
XXX protected method call account
XXX client 1 call for account after client 1 login succesfull [ 'confi1', 'confi2' ]
XXX protected method call account
XXX client 2 call for account after client 1 login succesfull [ 'confi1', 'confi2' ]
from rpc-websockets.
@mkozjak, researching now a solution to create a mobile <-> desktop communication over LAN.
This library seems like a good one to go with.
If we decide on it, I will do the fix, it seems simple enough
from rpc-websockets.
@sk91: Okay, also feel free to provide a PR to add your company to the list of users if you see fit: https://github.com/elpheria/rpc-websockets#users
from rpc-websockets.
This issue means that login/setAuth cannot be used at the moment. They should be removed from documentation until there is a way to use them.
from rpc-websockets.
@dsagal - the bugfix is available in v5.2.2.
from rpc-websockets.
No, only that specific client is authenticated.
from rpc-websockets.
@sk91: You're definitely correct, good catch!
We store clients in this.namespaces[ns].clients
so maybe we could find some place to store the authenticated info there? Would you like to provide a PR to fix this bug? Thanks in advance!
from rpc-websockets.
Related Issues (20)
- Publish 7.4.13 to NPM HOT 1
- How to get the Emit response ?
- Dependency Vulnrabilities HOT 3
- Ignore null in result/error HOT 2
- Help! Run ws on the same port as a http Express? HOT 2
- Access connected clients HOT 4
- Is this the proper way to close the socket? HOT 1
- The Map type cannot be returned using the Server registration method HOT 2
- `fn` type bound in `Server.register` might be slightly off HOT 2
- Migrate from request
- Resolve tough-cookie vulnerability
- How to handle exceptions on server? HOT 3
- Q: namespaces HOT 1
- process is hanging after calling client.close HOT 3
- Whether there is an interest in providing an extensible encoder and decoder? HOT 5
- call results in -32602 Invalid params when no params are given cause it sents null HOT 3
- When sents message without params it is ignored HOT 1
- Any reason emit events on namespace level will be broadcasting instead of only to subscribers like on top level HOT 1
- Sending ArrayBuffer is very awkward
- Target `esnext` when building releases
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rpc-websockets.