繁体   English   中英

我们可以在Node JS应用程序中使用socket.io和ejs(嵌入式javascript)而不是html页面吗?

[英]Can we use socket.io with ejs(embedded javascript) instead of html page in Node JS application?

在浏览器的客户端作为ejs页面:

<script src="https://cdn.socket.io/socket.io-1.2.0.js">
</script>
<script>
var socket = io()
socket.on('message', function (msg) {
    console.log(msg)
})
</script>

在Node Js的服务器端:

var http = require('http').Server(app);
var io = require('socket.io')(http)
io.on('connection', function(socket){
    console.log('a user connected')
    socket.on('disconnect', function(){
        console.log('user disconnected')
    })
io.emit('message', json);
})

我没有在Node Js控制台中获得“用户连接”日志。 因为var socket = io() 不起作用或者我不知道的问题是什么。 我可以在.ejs页面中使用socket.io吗? 我需要ejs,我的应用程序中也需要socket.io。 任何帮助,将不胜感激。

这个解决方案对我来说很好。

服务器端

var express     = require('express');
var app         = require('express')();
var server      = require('http').createServer(app);
var io          = require('socket.io')(server);
var ejs         = require('ejs');


app.set('view engine', 'ejs');
app.get('/', function(req, res) {
    res.render('index');
});

io.on('connection', function(socket) {
    console.log('a user connected');
    socket.on('chat message', function(msg){
        console.log('message: ' + msg);
      });
});

server.listen(process.env.PORT || 3000, function(){
    console.log('app running');
});

这是index.ejs代码

客户端

        <form action="">
                <input id="m" autocomplete="off" /><button>Send</button>
        </form>
        <script src="/socket.io/socket.io.js"></script>
        <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
        <script>
           $(function () {
                var socket = io();
                $('form').submit(function(){
                socket.emit('chat message', $('#m').val());
                $('#m').val('');
                return false;
                });
            });
        </script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM