2012-02-27 23 views
5

Tôi cần phải viết một plugin cho Chrome, nếu chạy trên Windows và URL của trình duyệt khớp với thứ gì đó cụ thể, có thể mở một đường ống có tên cho một quá trình nhất định chạy trên hệ điều hành.Plugin Chrome: Truy cập các đường ống có tên trên Windows

Lựa chọn plugin tốt nhất cho Chrome là gì? Tôi có nên đi với một Native Client hoặc tôi có thể sử dụng một cái gì đó ít xâm nhập (mặc dù tôi nhận ra tên ống theo định nghĩa là khá xâm nhập)?

+3

Sự hiểu biết của tôi về Native Client là nó được sandboxed; Tôi nghiêm túc nghi ngờ bạn có thể làm điều này với NaCl. AFAIK là lựa chọn duy nhất khác là NSAPI. –

+0

Vâng, đó cũng là điều tôi mong đợi. Tôi có thể chỉ cần nhìn vào bằng cách sử dụng một wrapper NSAPI sau đó. Chúc mừng! – dreijer

+1

Ý của bạn là NPAPI? Nếu vậy, có, bạn có thể sử dụng plugin NPAPI cho mục đích đó ... Bạn cũng có thể muốn xem Firebreath nếu bạn đang phát triển plugin NPAPI ... –

Trả lời

2

Native Client thực sự là hộp cát, như được chỉ ra bởi các nhận xét và NPAPI đã được gỡ bỏ.

Hai giải pháp hiện nay đã liên hệ với một ứng dụng bản địa chạy là những:

  1. Sử dụng HTTP, tùy chọn với WebSockets, với các ứng dụng bản địa (hoặc một ứng dụng proxy đó sẽ nói chuyện với một ứng dụng của bên thứ ba sử dụng bất kỳ phương pháp gốc, bao gồm cả đường ống) hoạt động như một máy chủ trên localhost và tiện ích mở rộng cố gắng kết nối với một cổng đã biết. GhostText là một ví dụ về kiến ​​trúc này.

  2. Sử dụng Native Messaging. Điều quan trọng là phải hiểu các giới hạn của phương pháp này:

    • Nó hoạt động như một đường ống đến quy trình bên ngoài, nhưng phải tuân theo giao thức Nhắn tin gốc (dựa trên JSON).
    • Không thể đính kèm quy trình hiện đang chạy (hoặc đường ống): Chrome chỉ có thể bắt đầu phiên bản mới của Máy chủ gốc và không thể bắt đầu liên lạc từ bên ngoài.

    Vì vậy, với những giới hạn đó, Máy chủ gốc của bạn sẽ là một proxy sẽ tự đính kèm vào đường ống được đặt tên và chuyển dữ liệu, dịch sang/từ giao thức Nhắn tin gốc.

+0

Làm cách nào để nhắn tin gốc có thể được sử dụng với các đường ống có tên? Tôi có cần một quá trình bên ngoài lấy dữ liệu JSON và sau đó kết nối với các đường ống có tên không? Hoặc, có cách nào để thực hiện STDIO với đường ống với Native Messaging trực tiếp không? Đối với ngữ cảnh, tôi cần gửi hai luồng độc lập cho một quá trình FFmpeg đồng thời để chúng được hợp nhất, đòi hỏi nhiều hơn những gì tôi có thể làm với STDIO. Một ống có tên là cần thiết. – Brad

+0

Hiểu biết của bạn rằng bạn sẽ cần một quy trình "proxy" sẽ kết nối với các đường ống được đặt tên là chính xác. – Xan

1

Bạn biết đấy, lạ đủ Tôi chỉ nhận thấy bạn có thể xem ống tên qua:

file: //./pipe/

tôi phát hiện ra điều này khi tôi đang đọc bài viết trên Wikipedia về họ , sao chép nó, và sau đó nghĩ rằng tôi đã sao chép một URL và vô tình dán nó vào chrome thay thế.

Bạn thậm chí không thể truy cập từ trình khám phá hoặc hệ thống tệp.

Các vấn đề liên quan