2013-06-14 31 views
11

Tôi đã tạo một số ứng dụng web bằng cách sử dụng Rook để nghe ip mạng của tôi (192.168.xx.xx) tại cổng 8000. Mọi người trong văn phòng của tôi có thể kết nối với họ chỉ cần nhập http://192.168.xx.xx:8000/page_name trong trình duyệt. Tôi cần phải theo dõi các trang này sử dụng và tự hỏi làm thế nào tôi có thể nhận được địa chỉ IP mạng của những người kết nối với họ.Nhận địa chỉ IP riêng của người dùng Rook/Shiny trang

Tôi không có kinh nghiệm về phát triển web và từ nghiên cứu được thực hiện cho đến nay dường như sử dụng mã phía máy khách như JavaScript rất khó (hầu như không thể) để đạt được điều đó, (đúng nếu tôi sai). Vì vậy, câu hỏi của tôi là: là có bất kỳ cách nào để nhận được ip khách hàng mạng bằng cách sử dụng mã phía máy chủ bên trong một ứng dụng Rook? (Nếu cần tôi sẵn sàng thay đổi máy chủ web, bất kỳ giải pháp nào được đánh giá cao).

Cảm ơn và xin lỗi trước khi câu hỏi của tôi có vẻ khó hiểu ... đặc biệt là tôi không chắc chắn nếu các thẻ khác là cần thiết.

EDIT: Tôi cũng sẽ chấp nhận câu trả lời bằng một cái gì đó khác với Rook (nhưng vẫn trong R)

EDIT 2: tôi đã thiết Shiny máy chủ sau link này. Tôi đang ở bước cấu hình máy chủ để có được access_log rằng, theo @Thell, chứa thông tin tôi cần. In The shiny-server.conf Tôi đã thêm các tuyên bố tương đối và bây giờ là:

run_as shiny; 

server { 
    listen 3838; 

    location/{ 
    site_dir /var/shiny-server/www; 
    log_dir /var/shiny-server/log; 
    directory_index on; 
    } 

} 

access_log /home/michelec/log.txt; 

dòng cuối cùng nên nói bóng để viết access_log vào thư mục nhà của tôi. Tuy nhiên, không có gì xảy ra, nhật ký vẫn trống. theo here, trong Formats phần, tôi sẽ nhận được một trong các bản ghi:

default ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"' 
short ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms' 
tiny ':method :url :status :res[content-length] - :response-time ms' 
dev concise output colored by response status for development use 

tùy thuộc nếu bạn để định dạng mặc định hoặc bạn thay đổi nó.

+1

Bạn có thể cung cấp mã của mình không? Không có nhiều điều trên Rook khác với tài liệu cơ bản, do đó, trả lời câu hỏi của bạn có thể sẽ cần một chút thử nghiệm, điều này có thể sẽ yêu cầu một ví dụ tái sản xuất. – SchaunW

+0

@SchaunW cảm ơn bạn đã trả lời. Xin lỗi, tôi chưa có mã cho tác vụ này. Tôi đang nghiên cứu mỗi ngày. Vì nó là, câu hỏi sẽ được trả lời ngay cả chỉ với một (hợp lệ) đầu vào để bắt đầu mã hóa này. – Michele

+2

Tôi đã có một trò chơi với điều này ngày hôm nay - có vẻ như 'ip()' nên là những gì bạn đang sau, nhưng tôi không thể nhận được bất kỳ đầu ra từ nó – alexwhan

Trả lời

3

Dường như Rook sẽ chỉ cung cấp thêm từ xa khi được hỗ trợ bởi rApache.

Một tùy chọn khác sẽ là thiết lập shiny-server từ những người tốt @ RStudio và sau đó configure the access log sao cho bạn có thể phân tích cú pháp đó bằng cách chọn access log format được chọn mà bạn chọn.

Tôi nghiêng về phía giải pháp Sáng bóng vì tác giả của rApache cũng đã giúp Sáng bóng và Sáng bóng (vì nó là sản phẩm chính thức của RStudio) dường như sẵn sàng cho sự tăng trưởng và sự sẵn có lâu dài mà chúng tôi can't really say about rApache (Là!).

+0

cảm ơn sự kiên nhẫn của bạn trong tuần này! Nhân tiện, trong những ngày này, trong khi thiết lập sáng bóng, tôi thấy rằng nó được xây dựng trên 'Node.js', cho phép nhận được ip rất dễ dàng thông qua mô-đun' connect'. mô-đun này là điều đằng sau 'access_log', nhưng tiếc là trong sáng bóng, khác với Node, bạn không thể truy cập ip đã truy xuất vào mã phía máy chủ. Theo cuộc thảo luận này [https://groups.google.com/forum/#!searchin/shiny-discuss/susan/shiny-discuss/EGQhEyoEk3E/lNQ5jLbPOBsJ] họ đang làm việc với nó – Michele

+1

Niềm vui của tôi. Thú vị ... Tôi đặt cược có thể được chèn khá dễ dàng vào api; và tôi đoán rằng các loại tính năng kiểm soát đầy đủ đó sẽ cần phải có cho phiên bản doanh nghiệp, vì vậy hãy kiên nhẫn; hoặc tốt hơn, hãy hack nguồn sáng bóng đó! :) – Thell

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