Ứng dụng khách Node.js cho máy chủ socket.io


120

Tôi có một máy chủ socket.io đang chạy và một trang web phù hợp với một ứng dụng khách socket.io.js. Tất cả hoạt động tốt.

Nhưng, tôi đang tự hỏi liệu có thể, trên một máy khác, có thể chạy một ứng dụng node.js riêng biệt sẽ hoạt động như một máy khách và kết nối với máy chủ socket.io đã đề cập không?


2
Làm cách nào để xem phản hồi từ socket.emit ()?
codecowboy

1
Xem qua tài liệu github.com/LearnBoost/socket.io-client , tôi chắc chắn rằng nó ở đó. Đã lâu rồi, nên tôi không nhớ, xin lỗi ...
Predrag Stojadinović

6
Nó không hoạt động nếu io.connecthàm được gọi như bạn đã đề cập. Nó nên được gọi như sau:socket = io.connect('http://localhost:1337');
ceremcem

Câu trả lời:


74

Điều đó có thể thực hiện được bằng cách sử dụng Socket.IO-client: https://github.com/LearnBoost/socket.io-client


8
Uhm, tôi có thể nhầm, nhưng điều này có vẻ như ứng dụng khách chạy trong trình duyệt. Những gì tôi cần là một ứng dụng khách node.js độc lập.
Predrag Stojadinović

Tôi đã không kiểm tra gần đây, nhưng trong Node 0.4.x, điều này cũng hoạt động trên máy chủ (tôi thực sự đã triển khai điều này trong một dự án trước đây).
alessioalex

1
Tôi rất vui vì nó đã làm việc cho bạn! Btw, tốt hơn là đặt ví dụ làm việc của bạn vào câu hỏi hơn là trong một câu trả lời riêng biệt.
alessioalex

Đây không cài đặt một cách chính xác đối với tôi trên windows 8 - tôi đã viết một lỗi cho nó
BT

@ PredragStojadinović: Bạn có thể đăng mã của mình được không? Tôi muốn kết nối một máy chủ NodeJS với một máy chủ khác. Bạn có thể giúp tôi không? Cảm ơn.
Pritam

42

Thêm vào ví dụ cho giải pháp đưa ra trước đó. Bằng cách sử dụng socket.io-client https://github.com/socketio/socket.io-client

Phía khách hàng:

//client.js
var io = require('socket.io-client');
var socket = io.connect('http://localhost:3000', {reconnect: true});

// Add a connect listener
socket.on('connect', function (socket) {
    console.log('Connected!');
});
socket.emit('CH01', 'me', 'test msg');

Phía máy chủ:

//server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on('connection', function (socket){
   console.log('connection');

  socket.on('CH01', function (from, msg) {
    console.log('MSG', from, ' saying ', msg);
  });

});

http.listen(3000, function () {
  console.log('listening on *:3000');
});

Chạy :

Mở 2 bảng điều khiển và chạy node server.jsnode client.js


2
Ví dụ tuyệt vời! Có một điều, về phía máy khách, tôi không tin rằng biến "socket" được chuyển cho sự kiện kết nối. Có lẽ tôi là sai, nhưng điều đó dường như là hành vi tôi nhìn thấy với NPM socket.io-client
Ryan S

8

Sau khi cài đặt socket.io-client:

npm install socket.io-client

Đây là cách mã khách hàng trông như thế nào:

var io = require('socket.io-client'),
socket = io.connect('localhost', {
    port: 1337
});
socket.on('connect', function () { console.log("socket connected"); });
socket.emit('private message', { user: 'me', msg: 'whazzzup?' });

Cảm ơn alessioalex .


0

Có, bạn có thể sử dụng bất kỳ ứng dụng nào miễn là nó được hỗ trợ bởi socket.io. Bất kể là nút của nó, java, android hay swift. Tất cả những gì bạn phải làm là cài đặt gói ứng dụng khách của socket.io.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.