【发布时间】:2017-01-29 20:59:58
【问题描述】:
我目前正在尝试让 angular2 前端与带有 socket.io 的 node.js 后端进行通信。 关键是,我让客户端连接到服务器,但在那之后,它们之间无法成功传递套接字调用。 这是一个简单的服务器代码:
var app = require('express')();
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io').listen(server);
io.on('connection', function() {
io.emit('update');
console.log('Connected');
});
io.on('updated', function() {
io.emit('update');
console.log('Updated');
});
server.listen(5000, function() {
console.log('Listening on 5000');
});
...对于组件:
import { Component } from '@angular/core';
import * as io from 'socket.io-client';
@Component({
selector: 'main-app',
template: `
<div>
<button (click)="foo()"
style='padding:20px; background:red; color:white'>
click me
</button>
</div>
`
})
export class AppComponent {
title = 'bar';
socket = null;
constructor() {
let self = this;
self.socket = io.connect('http://mysuperwebsite:5000', {
transports : ["websocket"]
});
self.socket.on('update', function(data) {
console.log(data);
});
}
foo() {
let self = this;
self.socket.emit('updated', {});
}
}
我不知道哪里出了问题,我猜你会的;) 感谢您的帮助!
编辑:最后,问题似乎来自 io.emit() 中缺少第二个参数。现在可以了,非常感谢你:)
【问题讨论】:
-
以下任何答案是否有助于您找到问题?如果是这样,那么您可以考虑accepting the answer,因为现在其他搜索此问题的人看到您的问题没有好的答案并且可能不会阅读。如果没有,那么您应该对它们发表评论,以便可以改进它们。谢谢。
标签: node.js express angular socket.io