最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

无法获取Ejs的Socket消息

运维笔记admin8浏览0评论

无法获取Ejs的Socket消息

无法获取Ejs的Socket消息

我正在尝试使用socket将消息从Node JS传递到Front端。但是,消息不会被传输。

var express  = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
const path = require('path');
const PORT = process.env.PORT || 5000;

io.on('connection', function(socket){
   io.emit('order', "Order Updated");
   console.log("Order Updated");
}); 

app.use(express.static(path.join(__dirname, 'public')))
  .set('views', path.join(__dirname, 'views'))
  .set('view engine', 'ejs')
  .get('/', (req, res) => res.render('pages/index'));

http.listen(PORT, function(){
  console.log('listening on *:' + PORT);
});

控制台日志打印为Order Updated。在index.ejs文件中,我有以下代码,我在UI中看不到任何控制台日志。

<script src=".io-1.2.0.js"></script>
<script src=".11.1.js"></script>
<script>
  $(function () {
    var socket = io();
    socket.on('order', function(msg){
      console.log(msg);
      window.scrollTo(0, document.body.scrollHeight);
    });
  });
</script>

更新1

基于以下答案,我将代码更新为:

io.on('connection', function(socket) {
    socket.emit('order', "Order Updated");
}); 

更新2

$(function () {
var socket = io.connect('http://127.0.0.1:5000', {transports ['polling']});
   socket.on('order', function(msg) {
      console.log(msg);
   });
});

服务器端控制台日志的图像:

回答如下:

也许在你的服务器端,你必须像这样发射到你的连接套接字?

io.on('connection', function(socket){
   socket.emit('order', "Order Updated");
   console.log("Order Updated");
}); 

编辑

在我的客户端,我正在连接host:port,这样就可以了

var socket = io.connect('http://127.0.0.1:5000', {transports: ['polling']});
socket.on('order', function(msg) {
   console.log(msg);
}

编辑2

在我的index.html(客户端),我也像这样调用socket.io:

<script src="/socket.io/socket.io.js"></script> <!-- directly get from Node.js server -->

希望能帮助到你。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论