首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular 6和Socket.IO - Socket.On不工作

Angular 6和Socket.IO - Socket.On不工作
EN

Stack Overflow用户
提问于 2018-08-23 08:18:51
回答 1查看 6.8K关注 0票数 3

我尝试在Angular 6项目中使用socket.io,但它似乎不起作用。这是我的问题:

我已经安装了socket.io-client (带npm)

这是我的服务器代码:

代码语言:javascript
复制
var express = require('express');

var app = express();

var bodyParser = require('body-parser');
app.use(bodyParser.json());

var path = require('path');

app.use(express.static(__dirname + '/client/public/dist/public'));

var db_url = 'mongodb://localhost:27017/DBName'

require('./server/config/mongoose.js')(db_url);

require('./server/config/routes.js')(app)

app.all("*", (req,res,next) => {
    res.sendFile(path.resolve("./client/public/dist/public/index.html"))
  });

const server = app.listen(1337);
console.log("listening on port 1337")

const io = require('socket.io')(server);

io.on('connection', function (socket) {

    socket.on('init',function(){      
        console.log("Socket id is",socket.id)
        io.emit('message',{msg:'testing socket'})
        console.log("after emit statement")
    })

});

app.listen(8000, function() {
    console.log("listening on port 8000");
})

在我的Angular项目中,我在一个组件的ts文件( my -rooms.component.ts)中,代码如下:

代码语言:javascript
复制
import { Component, OnInit } from '@angular/core';
import { HttpService } from '../http.service';
import { ActivatedRoute, Params, Router } from '@angular/router';
import { Injectable } from '@angular/core';
import * as io from 'socket.io-client';

@Component({
  selector: 'app-my-rooms',
  templateUrl: './my-rooms.component.html',
  styleUrls: ['./my-rooms.component.css']
})

export class MyRoomsComponent implements OnInit {
  user_email = localStorage.getItem('email');
  new_room = {name:""};
  errors = {};
  all_rooms = [];
  joined_rooms = [];
  socket: SocketIOClient.Socket;

  constructor(private _httpService: HttpService,
    private _route: ActivatedRoute,
    private _router: Router) {
      this.socket = io.connect();
     }

  ngOnInit() {
    console.log(localStorage)
    if (!localStorage.getItem('loggedIn')) {
      this._router.navigate(['/home']);
    }
    else {
      this.getAllRooms();
      this.getJoinedRooms();
    }

    this.socket.emit('init');
    this.socket.on('message',function(data){
      console.log(data.msg)
    }) 
  }

//Plus other functions for this component

基本上,无论是在终端还是在浏览器的控制台中,都没有记录任何内容。有人能帮上忙吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-23 09:21:45

你应该监听Node.js端口

代码语言:javascript
复制
constructor(
    private _httpService: HttpService,
    private _route: ActivatedRoute,
    private _router: Router
) {
    this.socket = io('http://localhost:1337');
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51976786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档