【问题标题】:Socket connection not establishing to node server套接字连接未建立到节点服务器
【发布时间】:2020-09-08 21:51:05
【问题描述】:

我正在研究nodejs并表达socket.io,尝试建立连接但没有调用io.on()方法。

请看下面我的代码。

var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app);
server.listen(process.env.PORT || '3000', function () {
console.log('server listens on port 3000');
});
var io = require('socket.io')(http);
io.listen(server);

io.on('connection', function(socket) {
console.log('Client connected!');
socket.on('message', function (data) {
    console.log('Sending update!');
    socket.emit('update', 'Working!');
});
});

【问题讨论】:

    标签: node.js express websocket socket.io


    【解决方案1】:

    试试这个

       var app = require('express')();
        var server = require('http').Server(app);
        var io = require('socket.io')(server);
    
    app.get('/', function(req, res) {
        res.sendFile(__dirname + '/index.html');
    });
    io.on('connection', function(socket) {
        socket.on('event', function(data) {
            console.log('A client sent us this dumb message:', data.message);
        });
    });
    server.listen(8080);
    

    前端

    <script src="/socket.io/socket.io.js"></script>
    <script>
        var socket = io.connect('/');
        socket.emit('event', { message: 'Hey, I have an important message!' });
    </script>
    

    【讨论】:

      【解决方案2】:

      使用var io = require('socket.io')(server); 而不是var io = require('socket.io')(http);

      更新代码

      var express = require("express");
      var app = express();
      var http = require("http");
      var server = http.createServer(app);
      
      var io = require("socket.io")(server);
      
      
      io.on("connection", function (socket) {
        console.log("Client connected!");
        socket.on("message", function (data) {
          console.log("Sending update!");
          socket.emit("update", "Working!");
        });
      });
      
      server.listen(process.env.PORT || "3000", function () {
        console.log("server listens on port 3000");
      });
      

      下面是测试socket io连接的代码

      var socket = require("socket.io-client")("http://localhost:3000");
      socket.on("connect", function () {});
      
      socket.emit("message", function (data) {});
      
      socket.on("update", function (data) {
        console.log(data);
      });
      
      
      
      

      【讨论】:

      • 感谢您的回复,根据您的说法,我已更改,但现在仍未建立连接
      • 只有命令提示符得到下面的控制台日志> babel-node -- ./index.js 服务器监听端口 3000
      • 您是否尝试使用此代码var socket = require("socket.io-client")("http://localhost:3000"); socket.on("connect", function () {}); socket.emit("message", function () {}); 检查连接是否建立
      • console.log("客户端已连接!");启动服务器后日志没有出现
      • 您需要监听“更新”事件才能查看它..var socket = require("socket.io-client")("http://localhost:3000"); socket.on("connect", function () {}); socket.emit("message", function (data) {}); socket.on("update", function (data) { console.log(data); });
      猜你喜欢
      • 2022-09-28
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多