เชื่อมต่อซ็อกเก็ตเข้ากับใบเรือจากการทดสอบ

ฉันกำลังพยายามทดสอบการเชื่อมต่อซ็อกเก็ตใบเรือจากมอคค่า

    var socketIOClient = require('socket.io-client');
    var sailsIOClient = require('sails.io.js');

    // Instantiate the socket client (`io`)
    // (for now, you must explicitly pass in the socket.io client when using this library from Node.js)
    var io = sailsIOClient(socketIOClient);

    // Set some options:
    // (you have to specify the host and port of the Sails backend when using this library from Node.js)
    io.sails.url = 'http://localhost:1337';

มันทำให้เกิดข้อผิดพลาด

ข้อผิดพลาดที่ไม่ได้รับการตรวจสอบ: ไคลเอนต์ socket.io (io) ที่ให้มาได้ถูกเพิ่มลงในอินสแตนซ์ SDK ซ็อกเก็ต Sails แล้ว (มี io.sails)

ฉันทำอะไรผิดหรือเปล่า? sails เวอร์ชัน 0.12.3, socket.io-client 1.4.6


person Վիգեն Սարգսյան    schedule 10.05.2016    source แหล่งที่มา
comment
คุณสามารถคิดออกได้หรือไม่? ฉันยังต้องทดสอบเบ้าของฉันในใบเรือด้วย   -  person Noitidart    schedule 06.03.2019


คำตอบ (2)


ปัญหาของคุณเป็นไปได้เนื่องจากคุณได้ติดตั้งหลายรายการ sails.io.js

คุณควรดูบรรทัดโค้ดนี้ sails.io.js

ตรวจสอบรหัสของคุณ

person William Penagos    schedule 25.05.2017
comment
ยินดีต้อนรับที่ StackOverflow และขอขอบคุณสำหรับความช่วยเหลือ โปรดหลีกเลี่ยงการลิงก์ภายนอกหากเป็นไปได้ หากคุณอ้างถึงบรรทัดเดียวโปรดอ้างอิงด้วย หากไม่ใช่บรรทัดเดียว ให้แก้ไขคำตอบของคุณเพื่อให้สรุปส่วนที่เกี่ยวข้อง (จากนั้นจึงลิงก์ไปยังข้อมูลเพิ่มเติมภายนอกที่เป็นประโยชน์) - person Yunnosch; 25.05.2017
comment
คุณได้อัปเดตคำตอบแล้วหรือยัง? ฉันกำลังพยายามทดสอบซ็อกเก็ตจากใบเรือด้วย ฉันใช้ Cloud SDK และ sails.helpers.http.sendHttpRequest เพื่อทดสอบจุดสิ้นสุด HTTP ต่อ - github.com/mikermcneil/ration/blob/master/test/private/ - แนวคิดใด ๆ สำหรับ Sockets - person Noitidart; 06.03.2019

ฉันเคยประสบปัญหานี้ทางกลับ มันเกิดขึ้นในขณะที่ฉันใช้ซ็อกเก็ตเพื่อเชื่อมต่อกับ React

การแก้ไขด่วนคือการเรียกใช้ฟังก์ชัน io เพียงครั้งเดียวเท่านั้น เช่น ใน React มันทำงานโดยการรวมฟังก์ชัน sockets ในฟังก์ชัน componentDidMount เพื่อให้แน่ใจว่าฟังก์ชันจะทำงานเพียงครั้งเดียวแม้ว่าจะรีเฟรชแล้วก็ตาม

ตรวจสอบให้แน่ใจว่าสิ่งนี้ทำงานเพียงครั้งเดียว

 var io = sailsIOClient(socketIOClient);
 io.sails.url = 'http://localhost:1337';

โดยการทำสิ่งนี้

    let io;
if (socketIOClient.sails) {
  io = socketIOClient;
} else {
  io = sailsIOClient(socketIOClient);
}

และคุณสามารถบอกลาข้อผิดพลาดอันเลวร้ายนั้นได้

person Aqueous    schedule 28.04.2021