socket.io服务器的Node.js客户端


120

我有一个socket.io服务器正在运行,并且有一个带有socket.io.js客户端的匹配网页。一切正常。

但是,我想知道是否有可能在另一台机器上运行一个单独的node.js应用程序,该应用程序充当客户端并连接到上述的socket.io服务器?


2
如何查看来自socket.emit()的响应?
codecowboy 2014年

1
浏览github.com/LearnBoost/socket.io-client文档,我确定它在那里。已经有一段时间了,所以我不记得了,对不起...
PredragStojadinović2014年

6
io.connect如您提到的那样调用函数是行不通的。它应该被称为:socket = io.connect('http://localhost:1337');
ceremcem 2014年

Answers:


74

使用Socket.IO-client应该可以做到这一点:https : //github.com/LearnBoost/socket.io-client


8
嗯,我可能会误会,但这看起来像在浏览器中运行的客户端。我需要的是一个独立的node.js客户端。
普雷德拉格Stojadinović

我最近没有检查过,但是在Node 0.4.x中也可以在服务器上工作(我实际上已经在过去的项目中实现了这一点)。
alessioalex 2012年

1
我很高兴为您服务!顺便说一句,最好将工作示例放在问题上,而不要放在单独的答案中。
alessioalex 2012年

在Windows 8上无法为我正确安装-我为此写了一个错误
BT

@PredragStojadinović:您能发布您的代码吗?我想将一个NodeJS服务器连接到另一个。你能帮我吗?谢谢。
2015年

42

为前面给出的解决方案添加示例。通过使用socket.io-client https://github.com/socketio/socket.io-client

客户端:

//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');

服务器端 :

//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');
});

跑 :

打开2控制台,并运行node server.jsnode client.js


2
很棒的例子!一件事,在客户端,我不认为在连接事件中传递了“ socket”变量。也许我错了,但这似乎是我在npm socket.io-client上看到的行为
Ryan S

8

安装socket.io-client之后:

npm install socket.io-client

客户端代码如下所示:

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?' });

谢谢alessioalex


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.