ไคลเอ็นต์ Node.js สำหรับเซิร์ฟเวอร์ socket.io


120

ฉันมีเซิร์ฟเวอร์ socket.io ที่ทำงานอยู่และหน้าเว็บที่ตรงกันกับไคลเอนต์ socket.io.js ทั้งหมดทำงานได้ดี

แต่ฉันสงสัยว่าในเครื่องอื่นจะเรียกใช้แอปพลิเคชัน node.js แยกต่างหากซึ่งจะทำหน้าที่เป็นไคลเอนต์และเชื่อมต่อกับเซิร์ฟเวอร์ socket.io ที่กล่าวถึงหรือไม่


2
ฉันจะดูการตอบสนองจาก socket.emit () ได้อย่างไร
codecowboy

1
อ่านเอกสารgithub.com/LearnBoost/socket.io-clientฉันแน่ใจว่ามีอยู่ ผ่านมาสักพักแล้วฉันจำไม่ได้ขอโทษ ...
Predrag Stojadinović

6
จะไม่ทำงานหากio.connectมีการเรียกใช้ฟังก์ชันตามที่คุณกล่าวถึง ควรเรียกว่า:socket = io.connect('http://localhost:1337');
พิธี

คำตอบ:


74

สิ่งนี้ควรเป็นไปได้โดยใช้ Socket.IO-client: https://github.com/LearnBoost/socket.io-client


8
อืมฉันอาจจะเข้าใจผิด แต่ดูเหมือนว่าไคลเอนต์ที่ทำงานในเบราว์เซอร์ สิ่งที่ฉันต้องการคือไคลเอนต์ node.js แบบสแตนด์อะโลน
Predrag Stojadinović

ฉันไม่ได้ตรวจสอบเมื่อเร็ว ๆ นี้ แต่ในโหนด 0.4.x สิ่งนี้ใช้งานได้บนเซิร์ฟเวอร์ด้วย (ฉันได้ใช้สิ่งนี้ในโครงการที่ผ่านมา)
alessioalex

1
ฉันดีใจที่ได้ผลสำหรับคุณ! แต่จะดีกว่าที่จะใส่ตัวอย่างการทำงานของคุณไว้ในคำถามแทนที่จะเป็นคำตอบแยกต่างหาก
alessioalex

สิ่งนี้ไม่ได้ติดตั้งอย่างถูกต้องสำหรับฉันใน windows 8 - ฉันเขียนข้อผิดพลาด
BT

@ PredragStojadinović: คุณช่วยโพสต์รหัสของคุณได้ไหม? ฉันต้องการเชื่อมต่อ NodeJS เซิร์ฟเวอร์หนึ่งไปยังอีกเครื่องหนึ่ง คุณช่วยฉันออกไปได้ไหม ขอบคุณ
Pritam

43

การเพิ่มตัวอย่างสำหรับโซลูชันที่ระบุไว้ก่อนหน้านี้ โดยใช้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.jsและnode client.js


2
ตัวอย่างสุดเจ๋ง! สิ่งหนึ่งในฝั่งไคลเอ็นต์ฉันไม่เชื่อว่าตัวแปร "ซ็อกเก็ต" จะถูกส่งต่อไปยังเหตุการณ์การเชื่อมต่อ บางทีฉันอาจจะผิด แต่ดูเหมือนว่าจะเป็นพฤติกรรมที่ฉันเห็นกับ 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


0

ได้คุณสามารถใช้ไคลเอนต์ใดก็ได้ตราบเท่าที่รองรับโดย socket.io ไม่ว่าจะเป็น node, java, android หรือ swift ก็ตาม สิ่งที่คุณต้องทำคือติดตั้งแพคเกจไคลเอนต์ของ socket.io

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.