Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Send direct messages #2638

Open
bambinorest1 opened this issue May 18, 2024 · 6 comments
Open

Send direct messages #2638

bambinorest1 opened this issue May 18, 2024 · 6 comments

Comments

@bambinorest1
Copy link

What if i want to use Storage domain directly https://chromedevtools.github.io/devtools-protocol/tot/Storage/. It seems to me that at the moment direct SendAsync messages can be sent linked to a specific session id. But Storage for example i'snt linked to session id

@kblok
Copy link
Member

kblok commented May 18, 2024

What do you get if you make a call from a session?

@bambinorest1
Copy link
Author

What do you get if you make a call from a session?

For example method https://chromedevtools.github.io/devtools-protocol/tot/Storage/#method-clearCookies takes optional argument browserContextId, how could it bind to session?

@kblok
Copy link
Member

kblok commented May 20, 2024

@bambinorest1 you have the BrowserContext.Id

@bambinorest1
Copy link
Author

@bambinorest1 you have the BrowserContext.Id

I still don’t understand why you think that I should call methods from the Storage domain from the session??
Some methods from Storage, it seemed to me, do not work locally with one page or other similar target that can linked to session, but work globally with the entire browser.

@kblok
Copy link
Member

kblok commented May 22, 2024

@bambinorest1 you have the BrowserContext.Id

I still don’t understand why you think that I should call methods from the Storage domain from the session?? Some methods from Storage, it seemed to me, do not work locally with one page or other similar target that can linked to session, but work globally with the entire browser.

Did you at least give it a try? I could expose the Connection from the Context. But you might need to wait for a new version.

@bambinorest1
Copy link
Author

bambinorest1 commented May 23, 2024

Did you at least give it a try?

Yeah, for example this code works:

const WebSocket = require('ws');
const axios = require('axios');

(async () => {
    const response = await axios.get('http://localhost:21316/json');
    const debuggerUrl = response.data[0].webSocketDebuggerUrl;

    const ws = new WebSocket(debuggerUrl);

    ws.on('open', function open() {
        console.log('Connected to the browser');

        const storageMessage = {
            id: 1,
            method: 'Storage.getCookies'
        };
        ws.send(JSON.stringify(storageMessage));
    });

    ws.on('message', function incoming(data) {
        const cookies = JSON.parse(data.toString()).result.cookies;

        for (const cookie of cookies) {
            console.log(cookie);
        }
    });

    ws.on('close', function close() {
        console.log('Disconnected from the browser');
    });

    ws.on('error', function error(err) {
        console.error('WebSocket error:', err);
    });
})();

I could expose the Connection from the Context.

I think this will be useful in many cases

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants