【发布时间】:2019-06-17 15:00:48
【问题描述】:
我正在尝试在我的 Angular / NodeJS 网站上实现与视图的聊天。
website 部署在运行在端口 4200 上的服务器上,backend 运行在 8000 上,而目前chat socket.io 模板运行在 3000 上。
我已经详细遵循了 socket.io 的官方聊天教程,所以我有一个可以在 3000 端口上运行的功能聊天页面,但是如何将它实现到 Angular 组件?
到目前为止,这是我的代码:
server.js:
const app = require('express')();
var http = require('http').Server(app);
var http2 = require('http').Server(app);
var io = require('socket.io')(http2);
http.listen(8000, function(){
console.log('listening on *:8000');
});
http2.listen(3000, function(){
console.log('listening on *:3000');
});
const home = require('./home.js');
const chat = require('./chat.js');
// SOCKET.IO for testing purpose, following the tutorial
app.get('/', function(req, res){
res.sendFile(__dirname + '/socket.html');
});
io.on('connection', function(socket){
...
});
chat.component.html:
<!doctype html>
<html>
<body>
...
<div class="bottom">
<form action="">
<input id="m" class="messageInput" autocomplete="off"/>
<button type="button" class="btn btn-primary btn-lg btn-block">SEND</button>
</form>
</div>
<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(e){
e.preventDefault(); // prevents page reloading
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function(msg){
$('#messages').append($('<li>').text(msg));
});
});
</script>
</body>
</html>
如果不通过路由(app.get('/', function(req, res){ res.sendFile(__dirname + '/socket.html') });
我能做什么?谢谢!很抱歉成为菜鸟:p
【问题讨论】:
-
有人知道吗? :)