我们可以在Node JS应用程序中使用socket.io和ejs(嵌入式javascript)而不是html页面吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们可以在Node JS应用程序中使用socket.io和ejs(嵌入式javascript)而不是html页面吗?相关的知识,希望对你有一定的参考价值。
在浏览器的客户端作为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>
以上是关于我们可以在Node JS应用程序中使用socket.io和ejs(嵌入式javascript)而不是html页面吗?的主要内容,如果未能解决你的问题,请参考以下文章
Socket.io 在 Node.js + Redis + Heroku(多个测功机)环境中发出并不总是收到
我是否可以通过socket.io和JavaScript将Unity程序连接到node.js服务器,如果可以,怎么办?