22

一部のテストで使用するダミー ソケットを作成しようとしています。

var net = require("net");

var s = new net.Socket();

s.on("data", function(data) {
  console.log("data received:", data);
});

s.write("hello!");

このエラーの取得

エラー: このソケットは閉じられています。

私もソケットを作成しようとしました

var s = new net.Socket({allowHalfOpen: true});

私は何を間違っていますか?


参考までに、完全なテストは次のようになります。

it("should say hello on connect", function(done) {

  var socket = new net.Socket();

  var client = Client.createClient({socket: socket});

  socket.on("data", function(data){
    assert.equal("hello", data);
    done();
  });

  client.connect();
  // writes "hello" to the socket
});
4

5 に答える 5

6

これを試して。

生産コードapp.js:

var net = require("net");

function createSocket(socket){
    var s = socket || new net.Socket();
    s.write("hello!");
}

exports.createSocket = createSocket;

テストコード: test.js: (モカ)

var sinon = require('sinon'),
    assert = require('assert'),
    net = require('net'),
    prod_code=require('./app.js')

describe('Example Stubbing net.Socket', function () {
    it("should say hello on connect", function (done) {
        var socket = new net.Socket();
        var stub = sinon.stub(socket, 'write', function (data, encoding, cb) {
            console.log(data);
            assert.equal("hello!", data);
            done();
        });
        stub.on = socket.on;
        prod_code.createSocket(socket);
    });
});
于 2013-09-06T19:46:16.077 に答える
0

これは websocket の便利なコードになります

'use strict';

const express = require('express');
const { Server } = require('ws');
const bodyParser = require('body-parser');
const  cors = require('cors');

 
const PORT = process.env.PORT || 5555;
const INDEX = '/public/index.html';

const router = express.Router();

var urlencodedParser = bodyParser.urlencoded({ extended: false });

router.get('/', function(req, res) {
    res.sendFile(INDEX, { root: __dirname });
});

const server = express()
  .use(router)
  .use(bodyParser.json())
  .use(cors)
  .listen(PORT, () => {
    console.log(`Listening on ${PORT}`)
  });

const wss = new Server({ server });

wss.on('connection', (ws) => {
    ws.on('message', message => {
        var current = new Date();
      console.log('Received '+ current.toLocaleString()+': '+ message);
      wss.clients.forEach(function(client) {
        client.send(message);

        var getData = JSON.parse(message);
        var newclip = getData.clipboard;
        var newuser = getData.user;

        console.log("User ID : "+ newuser);
        console.log("\nUser clip : "+ newclip);
    });
  });
});

于 2022-01-10T04:48:44.650 に答える