8 months ago
I followed the docs, implemented this and still struggling:
```import puppeteer from "puppeteer-core";
const launchArgs = JSON.stringify({
args: [--window-size=1920,1080
, --user-data-dir=/tmp/chrome/data-dir
],
headless: false,
stealth: true,
timeout: 5000,
});
const browser = await puppeteer.connect({
browserWSEndpoint: wss://production-sfo.browserless.io/?token=GOES-HERE&launch=${launchArgs}
,
});```
I'm getting: Error: Unexpected server response: 500
0 Replies
Note: the above is an example from the docs and not my code (links not configured etc)
8 months ago
railway is a headless environment, so I'd say no its not going to be supported
8 months ago
I don't see why not, I also don't see how headless or not would come into play here
The stream I'm trying to load is from my own app - and can change the page I'm visiting with puppeteer
How I know the stream isn't loading
const targetWsUrl = "wss://url/rtc";
let wsConnected = false;
page.on("request", (request) => {
console.log("Request:", request.url());
const url = request.url();
if (url.startsWith(targetWsUrl)) {
wsConnected = true;
8 months ago
hmmm, I don't really know what to tell you here
8 months ago
sorry, I don't have any real experience with puppeteer
8 months ago
well does something error out when you tell it to run with a head?
8 months ago
right but can you not run it in headfull mode?
8 months ago
then there you have it
8 months ago
I also noticed you are using browserless.io, instead of self hosting browserless on railway? not that it would fix anything
8 months ago
ah okay cool
8 months ago
it's a docker environment, there are no heads, nothing specific to railway
8 months ago
yeah, you'd need to emulate something like that
8 months ago
if you give me several hours, i may be able to implement that for you
8 months ago
id just need you to provide me with a minimal reducible example that i can run so that tells me / shows me that ive started chrome in headfull mode, of course this example should also provide some indictor or error if i try to start chrome in headfull mode and browserless isnt supporting that, know what i mean?
8 months ago
i say several hours because im just about to head out, so ill work on it when im back
8 months ago
but that gives you time to work on the example!
8 months ago
no problem!
"use server";
import puppeteer from "puppeteer-core";
export const captureThumbnail = async (username: string) => {
const launchArgs = JSON.stringify({
stealth: true,
args: [
`--use-fake-device-for-media-stream`,
`--use-fake-ui-for-media-stream`,
`--no-sandbox`,
],
});
console.log("Capturing thumbnail for:", username);
const browser = await puppeteer.connect({
browserWSEndpoint: `${process.env.BROWSER_WS_ENDPOINT}&launch=${launchArgs}`,
});
const page = (await browser.pages())[0];
await page.setViewport({ width: 640, height: 360 });
const targetWsUrl = "wss://";
let wsConnected = false;
page.on("request", (request) => {
console.log("Request:", request.url());
const url = request.url();
if (url.startsWith(targetWsUrl)) {
wsConnected = true;
console.log("WebSocket connection established:", url);
const screenshot = async () => {
const screenshot = await page.screenshot({
type: "png",
fullPage: true,
});
console.log("Screenshot succesful")
};
procedure();
}
});
await page.goto(`${page_url}`);
while (!wsConnected) {
console.log("Waiting for WebSocket connection...");
await new Promise((resolve) => setTimeout(resolve, 1000));
}
};
8 months ago
mind throwing that in a repo so I can simply run it in a service?
8 months ago
full repo that has everything I'd need to trigger that code to run and do it's thing
8 months ago
brody192
8 months ago
it doesn't look very minimal
I guess it does crash when headful is unsupported while requesting it in the .connect
8 months ago
haha I think you are missing the point of minimal
8 months ago
not a full project, just like a single script that proves the issue / proves it's fixed
Oh, I thought of doing that but wasn't sure how it would be trigerred on Railway easily
8 months ago
you'd have your package.json setup properly, right now you have a full app
8 months ago
I'd just like a minimal reproducible example, emphasis on minimal
8 months ago
okay perfect, now that's minimal
8 months ago
one question, how have you been able to verify that this code works? run it with your local chrome install instead of browserless?
Yes, I wrote it with normal puppeteer initially and then modified it for browserless
8 months ago
okay perfect
Seems like there's an issue with some newer updates I made to it, let me fix and push
Okay fixed - when you run local.ts it uses normal puppeteer, when you run index.ts it uses browserless
You'll be able to see the difference it output between the two (and sorry for the hassle - I should have tested the newest version with all the new stuff I added on while debugging)
8 months ago
okay cool, what version is going to run by default when deployed to railway?
8 months ago
perf
8 months ago
i dont have bun locally (windows without WSL) so how can i verify that this is not working?
8 months ago
how fast could you add in a web server to serve that image?
8 months ago
Uint8Array(4190)
would increase?
8 months ago
might help to have a web server to serve that image?
8 months ago
i know i said minimal but id still need a way to verify my findings since i cant run this locally
8 months ago
web server or convert to plain old node, whatever is easier
8 months ago
sweet
8 months ago
this was such a good feature
8 months ago
yeah i mean in this scenario i trust what you are pushing but its a good security feature to have
8 months ago
and you said if the image is black its not working?
8 months ago
gotcha
8 months ago
thats funny since i didnt implement the virtual display server yet
8 months ago
are you using browserless v1 or v2
8 months ago
same
8 months ago
waiting for dns to update so i can see the image
Nvm, I got mixed up - I have the stream running now so it should be easier to see if it works or not
8 months ago
dns still isnt updated yet lol
8 months ago
it is indeed black
8 months ago
8 months ago
me too
8 months ago
of course!
8 months ago
you are running it in headless mode? i thought you wanted headless false?
8 months ago
8 months ago
awsome
8 months ago
is the stream running?
8 months ago
still black even with xvfb running
The browserless instance doesn't crash though while connecting with headless: false?
8 months ago
correct
8 months ago
great sleep schedule lol
8 months ago
can you leave the stream running?
Could you share an easy way for me to replicate the instance with headful mode on?
8 months ago
this is what ive done so far
8 months ago
8 months ago
it works now, and all i did was switch to browserless v1.
stock template, no xvfb.
8 months ago
no problem!