簡體   English   中英

Socket.io 和 Node.js 上的 Angular Chat

[英]Angular Chat on Socket.io and Node.js

我想用 Angular 和 Socket.io 寫一個聊天。 一切都在本地機器上運行。 但是在遠程 Node.js 上,它不處理請求並且不連接到 Socket,盡管我通過 SSH 運行它。 也許我做錯了什么? 我是新手。 請幫忙。 我已經坐了 10 個小時。 我會說更多,也許這很重要。 當我從 localhost:3000 上的遠程站點打開 Socket 時,一切都像在本地機器上一樣運行(盡管這很合乎邏輯)。

服務器部分

const cors = require('cors');
const express = require('express');
const app = express();
const server = require('http').createServer(app);
server.listen(3000);
const io = require('socket.io')(server);
app.use(cors());
let connections = [];

io.on('connection', (socket) => {


    connections.push(socket);
    console.log('Connect');
    console.log(connections.length);

    socket.on('disconnect', (data) => {
        connections.splice(connections.indexOf(socket), 1);
        console.log('Disconnect');
    console.log(connections.length);
    })

    socket.on('send mess', (obj) => {
        console.log(obj);
        io.sockets.emit('add mess', obj);
    })
});

角度服務

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, Subscriber } from 'rxjs';
import * as io from 'socket.io-client';
import * as $ from 'jquery';

@Injectable({
  providedIn: 'root'
})
export class WhiteServiceService {
  socket: any;
  readonly url: string = 'ws://whitefox.website:3000/';

  constructor(private http: HttpClient) {
    this.socket = io(this.url);
  }

postMessage(message: {}) {
    this.socket.emit('send mess', message);
  }

white() {
      this.socket.on('add mess', (data) => {
    $('ul').append('<li>'+data.name +': ' + data.message + '</li><br>');
  })
  }
}```

角客戶端

import { Component, OnInit } from '@angular/core';
import { FormBuilder, Validators } from '@angular/forms';
import { WhiteServiceService } from '../white-service.service';
import * as $ from 'jquery';

@Component({
  selector: 'app-chat',
  templateUrl: './chat.component.html',
  styleUrls: ['./chat.component.css']
})
export class ChatComponent implements OnInit {

  messageValue: string = "Hi";
  number: number;

  constructor(private fb: FormBuilder, private sendMessageServise: WhiteServiceService) { }

messageForm = this.fb.group({
  name: ['name', Validators.required],
  message: ['message', Validators.required]
})

  sendMessage() {
    this.messageValue = null;
    this.sendMessageServise.postMessage(this.messageForm.value);
  }



  ngOnInit() {
  this.sendMessageServise.white();
  }

}

可能你在 Server.js 中遺漏了它

const io = require('socket.io')(server, {
  cors: {
    origins: ['*']
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM