Tôi đang cố gắng tạo một giao diện lệnh đơn giản để kết nối máy tính ở nhà với máy chủ mà tôi sở hữu, để tôi có thể đẩy lệnh đến máy chủ và máy tính gia đình của mình nhận được. Các lệnh đó là tạm dừng/tiếp tục đơn giản cho trình tải xuống của tôi. Thiết kế của tôi là, trên một máy chủ, tôi chạy một thể hiện trung tâm, tạo ra một cửa sổ cho các lệnh truyền và một cửa sổ cho backend để truyền các lệnh đó đến máy của tôi. Tôi đang giới hạn hai "cửa sổ" đó với một kênh, họ chạy một máy chủ. Khi một khách hàng kết nối và gửi một tin nhắn đến trung tâm, nó sẽ được truyền qua một kênh đến cửa sổ phụ trợ và sau đó đến phần phụ trợ thực sự (trên máy tính gia đình của tôi). Khi phụ trợ đáp ứng với cửa sổ phụ trợ trên hub, hub sẽ in kết quả quay lại máy khách.go websockets eof
Với cách tiếp cận này, chỉ thư đầu tiên chuyển và làm việc với trình tải xuống của tôi. Tôi phải kết nối lại các phụ trợ từ máy nhà của tôi với trung tâm mỗi khi tôi nhận được một tin nhắn để có được điều này làm việc đúng cách. Tôi không nghĩ đó là cách thích hợp với websockets, vì vậy tôi ở đây. Sau khi một yêu cầu thành công (khi backend kết thúc công việc của nó và trả lời kết quả), nó được looped mãi mãi với lỗi EOF.
Các bộ phận quan trọng của mã là:
Nếu bạn đặt các nguồn trong GOPATH của bạn (tôi đang phát triển nó cho tip phiên bản đi để hỗ trợ các websockets hiện đại), để biên dịch nó: go build gosab/cmd
, để chạy nó:
./cmd -mode="hub"
hub./cmd -mode="backend" --address="localhost:8082"
backend
Để vượt qua các tin nhắn đến các trung tâm, sử dụng javascript này:
var s = new WebSocket("ws://localhost:8082")
s.send("1 5")
Vì vậy, làm thế nào để xử lý nó? Kênh có phải là cách hay để giao tiếp giữa hai yêu cầu khác nhau không?
Tái phát minh bánh xe, có thể để giải trí? Nghe có vẻ giống như Salt: http://saltstack.org/ hoặc Puppet Labs Marionette: http://docs.puppetlabs.com/mcollective/index.html – djangofan
các liên kết tốt, nhưng tôi muốn tự mình thực hiện một cái gì đó như thế này – farnoy
I sử dụng một cái gì đó tương tự (một máy chủ trò chơi với giao tiếp trình duyệt-máy chủ trong websockets) vì vậy tôi biết làm thế nào để làm điều đó trong đi nhưng tôi không nhận được câu hỏi thực sự ở đây là gì.Nếu nó chỉ là "kênh là một cách tốt để giao tiếp", câu trả lời là CÓ. –